누군가 다음 코드가 제대로 실행되지 않는 이유를 알아낼 수 있습니까? 이전 프로세스가 완료 될 때 새 프로세스를 생성하려고하지만이 코드를 실행하면 모든 작업이 자동으로 실행됩니다. 즉, 모든 작업 보고서는 완료되지 않았을 때 완료되고 중지되며 창은 열립니다. 왜 실제로 is_alive()에 대한 생각은 false를 반환합니까? 귀하의 코드는 각 createInstance()
전화에이 개 프로세스를 산란한다어떻게 다중 처리 (파이썬) 모듈을 잘못 사용합니까?
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 ***')
나는 모든 질문을 읽을하지 않은하지만 당신은 멀티 모듈 살펴 보았다 : 나는 또한
cmd
정의 (see docs를) 변경? –이것은 정말로 http://softwareengineering.stackexchange.com/ 또는 http://codereview.stackexchange.com/에 더 적합한 질문 인 것 같습니다. 당신은 거기에있는 사람들이 이처럼 복잡한 것을 다루는데 더 기꺼이 도움이 될 것입니다. 스택 오버플로는 특정 코드 문제에 대한 도움을 얻는 데에만 사용됩니다. –
코드 검토는 * 코드 * (및 기타 도움말 센터 조건이 충족 된 경우)에만 적합합니다. 이것은 너무 넓어서 묻지 만 CR에는 적합하지 않습니다. –