2017-05-23 6 views
0

개 이상의 기능을 전달한다 :감안할 콜백

with concurrent.futures.ProcessPoolExecutor(max_workers=(2*multiprocessing.cpu_count()+1)) as executor: 
     for netelement in DOC['code']['info']['dev']: 
      job = executor.submit(bgp_communities.do_lookup, netelement) 
      job.add_done_callback(functools.partial(bgp_communities.do_data_wrangling, DOC)) 

future의 콜백 파라미터로 2 함수 (bgp_communities.do_data_wrangling 등)을 통과 할 수 있습니까?

답변

0

귀하의 질문은 명확하지 않습니다. 그러나 작업이 완료되었을 때 둘 이상의 함수를 호출하려면 job.add_done_callback을 다시 호출하면됩니다.

with concurrent.futures.ProcessPoolExecutor(max_workers=(2*multiprocessing.cpu_count()+1)) as executor: 
    for netelement in DOC['code']['info']['dev']: 
     job = executor.submit(bgp_communities.do_lookup, netelement) 
     job.add_done_callback(functools.partial(bgp_communities.do_data_wrangling, DOC)) 
     job.add_done_callback(...) 

docs 참조 :

add_done_callback (FN)

미래에 호출 FN을 연결합니다. 미래가 취소되거나 실행이 종료 될 때 미래를 유일한 인수로 fn이 호출됩니다.

추가 된 호출 가능 번호는에 추가 된 순서대로 호출되며 항상 추가 된 프로세스에 속한 스레드에서 호출됩니다. 호출 가능 객체가 Exception 서브 클래스를 발생 시키면 기록되고 무시됩니다. 호출 가능 객체가 BaseException 하위 클래스를 발생 시키면 비헤이비어가 정의되지 않습니다.

미래가 이미 완료되었거나 취소 된 경우 fn이 즉시 호출됩니다.