我有以下代码:
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
和几个Future
来实现这一点
您正在寻找
map_async
https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.AsyncResult,而不是map
。这是你的例子。这可以应用于任意数量的函数调用。所有这些都将异步执行。你知道吗另一种方法是使用
concurrent.futures
包:相关问题 更多 >
编程相关推荐