【发布时间】:2018-01-19 20:31:40
【问题描述】:
我有以下代码:
def do_smth(query):
result_1 = api_request_1(query) # ['1', '2', '3']
result_2 = api_request_2(query) # ['a', 'b', 'c']
return result_1 + result_2 # ['1', '2', '3', 'a', 'b', 'c']
现在我想并行运行这些请求并合并结果。所以我这样做:
def do_smth_parallel(query):
pool = Pool(processes=2)
result = []
arg = [ query ]
result.extend(pool.map(api_request_1, arg)[0])
result.extend(pool.map(api_request_2, arg)[0])
pool.close()
pool.join()
return result
到目前为止一切顺利,但map 是一个阻塞功能。所以... do_smth_parallel 并不多 parallel :)
我该怎么做?
附:在 Java 中,我会使用 ExecutorService 和几个 Futures 来实现这一目标
【问题讨论】:
标签: python multithreading python-2.7 parallel-processing