有人可以幫我找出爲什麼下面的代碼將無法正常運行?我想要像以前那樣產生新的進程,但是運行這些代碼會自動運行所有的東西,也就是說所有的工作報告都完成了,當他們沒有時停止,他們的窗口也打開了。任何想法,爲什麼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。 –