【发布时间】:2017-10-10 23:32:25
【问题描述】:
我写了下面的代码,使用 subprocess 方法运行命令,在 2 个 for 循环下,
import threading
import subprocess
def do (i,j):
subprocess.Popen(['python2.7 some_python_code.py {} {}'.format(i,j)],shell=True,stdout=subprocess.PIPE)
z=[]
for i in range (0,50):
for j in range (0,50):
t = threading.Thread(target=do, args=(i,j))
t.start()
z.append(t)
for t in z:
t.join()
问题是它突然启动了大量的python进程并吃掉了我的全部内存,我该如何限制线程数?
谢谢。
【问题讨论】:
-
(1)
subprocess.Popen()在进程运行时立即返回。您必须wait才能终止它。 (2) 对于线程创建,请查看ThreadPoolExecutor以限制线程数。 -
我认为 subprocess.call 等待结果,但它是串行过程,而不是并行过程。谢谢
标签: python multithreading python-2.7 python-3.x