2013-10-27 3 views
1

실행하는 데 약 10 초 걸리는 프로세스가 있습니다. 다음 함수는 열 개 제목 항목에 대해 약 100 초가 소요됩니다 :Python을 사용하여 병렬로 함수 처리

for title in titles_to_update: 
    run_update_procedure(title) 

이 절차를 병렬화하는 가장 좋은 방법 일 것입니다 무슨. 하겠습니까?

pool = Pool(2) 
pool.map(run_update_procedure, list(titles_to_update)) 

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

+2

병렬 처리로 코드 속도가 빨라지지는 않습니다. 병목 현상이란 무엇입니까? CPU? IO? 자원을 기다리고 있습니까? – alko

+0

실제'run_update_procedure()'는 끝내기까지 약 20 초가 걸리는 API 호출입니다. 기본적으로 요청을 처리하고 필요한 정보를 API에서 기다리고 있습니다. – David542

+1

CPU- 바운드의 경우, CPU 코어보다 많은 프로세스를 지정해도 아무 것도 얻지 못할 수도 있습니다. 어쨌든, 풀 "맵"기능 중 하나를 원하면 모든 프로세스에서 작업을 분산시킬 수 있습니다. 'apply_async()'는 전체 목록을 단일 프로세스로 전달합니다. 뭔가 해봐! ;-) –

답변

0

시스템에 사용할 여분의 코어가 있고 설명에 설명이있는 경우에는 .map을 선택하는 것이 좋습니다. 당신이 기술 한 작업 유형에 대해서는 아마 .imap_unordered을 사용할 것입니다. 설명서 here을보십시오.

관련 문제