2017-05-23 2 views
0

100 개의 쿼리를 병렬로 실행해야하지만 리소스가 충분하지 않아 20 개의 하위 목록이있는 목록을 만들었고 각 하위 목록에는 5 개의 프로세스가 포함되어 있습니다.파이썬 멀티 프로세싱을 사용하는 작업 목록 목록

이제 작업 목록을 연속적으로 실행하고 싶습니다. 좀 더 설명 : 처음 다섯 개 개의 쿼리가 완료되면, 두 번째 다섯이 시작됩니다 등등 ...

I했던이 :

jobs_list = [] 
for sublist in list_all: 
    jobs = [] 
    for cd in sublist: 
     process = multiprocessing.Process(target=calc_zio, args=(cd,)) 
     jobs.append(process) 
    jobs_list.append(jobs) 

for l in jobs_list: 
    for j in l: 
     j.start() 

for l in jobs_list: 
    for j in l: 
     j.join() 

하지만 CPU

의 100 % 실행중인

내가 틀렸어?

감사합니다.

+0

내가 맞으면 ** 100 **'프로세스'를 실행 중입니다. https://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.pool – stovfl

답변

0

다음 시작하기 전에 하위 목록에 가입해야합니다.

+0

에 대해 읽어보십시오. 감사합니다. 이제 알겠습니다. 작동하는 것 같습니다. 나는 CPU의 40 %에서 65 % 사이에서 실행 중이고 python.exe는 단지 5 개뿐입니다. 주석에서 언급 한 stovfl처럼 –

+0

@ AdamAdam이 출시되었습니다. 주어진 수의 프로세스가 항상 실행됩니다. 이 구현을 사용하면 5 명 중 하나가 나머지 시간보다 오래 걸리는 경우 해당 일괄 처리에 소요되는 시간이 대부분 단일 프로세스를 실행하는 데 소요됩니다. 따라서 풀은 소비되는 리소스를 제한 할뿐만 아니라 부하를보다 일관되게 유지할 수있는 기능을 제공합니다. – Aaron

+0

이것은 내가 지금하려고하는 것이지만, multiprocessing.pool과 함께 유용한 예제를 찾을 수 없다. –