본문 바로가기
파이썬

파이썬 계속하기 전에 모든 다중 처리 작업이 완료 될 때까지 기다리십시오.

by º기록 2020. 11. 13.
반응형

여러 작업을 병렬로 실행하고 모든 작업이 완료되면 계속하고 싶습니다. 나는 뭔가있어

# based on example code from https://pymotw.com/2/multiprocessing/basics.html
import multiprocessing
import random
import time

def worker(num):
    """A job that runs for a random amount of time between 5 and 10 seconds."""
    time.sleep(random.randrange(5,11))
    print('Worker:' + str(num) + ' finished')
    return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,))
        jobs.append(p)
        p.start()

    # Iterate through the list of jobs and remove one that are finished, checking every second.
    while len(jobs) > 0:
        jobs = [job for job in jobs if job.is_alive()]
        time.sleep(1)

    print('*** All jobs finished ***')

작동하지만 모든 작업이 완료 될 때까지 반복해서 반복하는 것보다 모든 작업이 완료 될 때까지 기다리는 더 좋은 방법이있을 것입니다.

 

해결 방법

 

이건 어떤가요?

for job in jobs:
    job.join()


 

참조 페이지 https://stackoverflow.com/questions/33933561

 

 

반응형

댓글