您实际上并没有在此处同时执行任何操作,因为您正在使用pool.apply
,它将一直阻塞直到传递给它的任务完成为止。因此,对于中的每个项目partitions
,您都需要search_method
在中的某个进程中运行pool
,等待其完成,然后继续进行下一个项目。这与您在Windows进程管理器中看到的完全吻合。您要pool.apply_async
改为:
for search_term in search_terms:
results = []
results = [pool.apply_async(search_method, args=(search_term, partitions[x])) for x in range(len(partitions))]
# Get the actual results from the AsyncResult objects returned.
results = [r.get() for r in results]
或者更好的是,使用pool.map
(以及functools.partial
将多个参数传递给我们的worker函数的功能):
from functools import partial
...
for search_term in search_terms:
func = partial(search_method, search_term)
results = pool.map(func, partitions)