【问题标题】:How to programmatically stop multiprocessing.Pool map function如何以编程方式停止 multiprocessing.Pool 映射功能
【发布时间】:2016-03-18 23:55:03
【问题描述】:

multiprocessing.Poolmap 函数对于并行处理数据非常有用;它会自动从原始列表中创建块,并将它们提供给不同的工作人员。

有时您正在扫描列表以查找验证功能的唯一元素(例如,密码破解、谓词检查)。在这些情况下,您对获取所有输入的映射不感兴趣,而只对验证检查的那个感兴趣。

自动并行化这些任务的最佳方法是什么?

【问题讨论】:

  • 不看结果怎么能说你对结果不感兴趣?
  • 例如当你想暴力破解密码时,你知道只有一个密码是正确的,所以当你找到它时,工作就完成了。
  • 只需分解您的输入,以便使用 pool_size 项目数调用 map。如果任何返回符合您的终止条件,则停止,否则继续下一个 pool_sized 块。
  • 另外请记住,这将是一个非常缓慢的密码破解程序。
  • @pvg:我不是暴力破解密码,我会使用 C。这只是为了举例说明 ;)

标签: python multithreading python-multiprocessing


【解决方案1】:

您只需调用terminate() 即可中止所有工作进程。您需要为这样的任务创建一个专用的工作池,因为您不能重复使用它,但这对于大多数场景来说不是一个大问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多