您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用多处理模块时如何提高CPU利用率?

使用多处理模块时如何提高CPU利用率?

您实际上并没有在此处同时执行任何操作,因为您正在使用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)
其他 2022/1/1 18:51:09 有482人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶