有人可以帮我找出为什么下面的代码将无法正常运行?我想要像以前那样产生新的进程,但是运行这些代码会自动运行所有的东西,也就是说所有的工作报告都完成了,当他们没有时停止,他们的窗口也打开了。任何想法,为什么is_alive()返回false时,它实际上是真的?我如何使用多处理(python)模块错误?
import subprocess
import sys
import multiprocessing
import time
start_on = 33 #'!'
end_on = 34
num_processors = 4;
jobs = []
def createInstance():
global start_on, end_on, jobs
cmd = "python scrape.py" + " " + str(start_on) + " " + str(end_on)
print cmd
p = multiprocessing.Process(target=processCreator(cmd))
jobs.append(p)
p.start()
start_on += 1
end_on += 1
print "length of jobs is: " + str(len(jobs))
def processCreator(cmd):
subprocess.Popen(cmd, creationflags=subprocess.CREATE_NEW_CONSOLE)
if __name__ == '__main__':
num_processors = input("How many instances to run simultaneously?: ")
for i in range(num_processors):
createInstance()
while len(jobs) > 0:
jobs = [job for job in jobs if job.is_alive()]
for i in range(num_processors - len(jobs)):
createInstance()
time.sleep(1)
print('*** All jobs finished ***')
我还没有看完所有的问题,但你看过多处理模块吗? –
这真的好像是一个更适合http://softwareengineering.stackexchange.com/或http://codereview.stackexchange.com/的问题。你可能会发现那里的人更愿意帮助解决像这样复杂的事情。堆栈溢出实际上只是为了获得有关特定代码问题的帮助。 –
代码审查仅适用于有*代码*(以及满足帮助中心内的其他条件)。对于SO而言,这太宽泛了,但它不适合CR。 –