鉴于:
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))
是否可以将第二个函数(如bgp_communities.do_data_wrangling
)作为参数传递给future
的回调?
答案 0 :(得分: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。
添加的callables按照添加的顺序调用,并且始终在属于添加它们的进程的线程中调用。如果callable引发Exception子类,则会记录并忽略它。如果callable引发BaseException子类,则行为未定义。
如果未来已经完成或取消,将立即调用fn。