当前位置: 首页 > 面试题库 >

我们什么时候应该调用multiprocessing.Pool.join?

金晨
2023-03-14
问题内容

我正在使用’multiprocess.Pool.imap_unordered’如下

from multiprocessing import Pool
pool = Pool()
for mapped_result in pool.imap_unordered(mapping_func, args_iter):
    do some additional processing on mapped_result

我需要打电话pool.closepool.join之后的for循环?


问题答案:

不,您没有,但是如果您不再使用游泳池,那可能是个好主意。

Tim Peters在此SO帖子中致电pool.close或致电的理由pool.join很明确:

至于Pool.close(),您应该在永远不会将更多工作提交给Pool实例的情况下(且仅在)进行调用。因此,通常在主程序的可并行化部分完成时调用Pool.close()。然后,当所有已分配的工作完成时,工作进程将终止。

调用Pool.join()等待工作进程终止也是一种很好的做法。除其他原因外,通常没有很好的方法来报告并行化代码中的异常(异常仅在与您的主程序正在执行的内容有关的上下文中发生),并且Pool.join()提供了一个同步点,可以报告发生的某些异常在您否则无法看到的工作流程中。



 类似资料:
  • 问题内容: 我在ORM上还很新。我刚刚开始阅读有关使用Hibernate的Java Persistence API的书籍和文档。 我只是想知道,关闭EntityManagerFactory与jdbc数据库连接关闭类似吗? 我们是否应该在每次持久/更新/删除后关闭它?如果我们不关闭它,数据库连接会保持打开状态吗? 问题答案: 我只是想知道,关闭与jdbc数据库连接关闭类似吗? 这并非完全正确,但关闭

  • 问题内容: 面试官问我: 什么是Observer,什么Observable时候应该使用它们? 我并不了解这些术语,因此当我回到家并开始使用GoogleObserver和Google搜索时Observable,从不同的资源中发现了一些要点: 1)Observable是一个类,Observer是一个接口。 2)Observable该类维护一个Observers的列表。 3)当一个Observable对

  • 我在StackOverflow上搜索了很多关于在Android环境中使用上下文的解释,但我只找到了零散的解释片段。 何时应该使用而不是?这个问题详细说明如下。 在和其他中:创建、构建、实例化...需要上下文。我们应该使用还是? 并且如果这些操作是在而不是片段中编写的? 顺便说一下,通过调用和,可能会发生空异常和/或内存泄漏:何时?更准确地说:是否只有当调用方的生存期是被调用对象生存期的(严格)子集

  • 问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync

  • 问题内容: 我对使用和翻译有疑问。我了解到,在模型中,我应该使用。但是还有其他地方我也应该使用吗?表单定义呢?它们之间是否存在性能差异? 编辑: 还有一件事。有时候,代替被使用。正如文档所述,仅在将字符串显示给用户之前,才将字符串标记为要翻译,并在可能的最新情况下进行翻译,但是我在这里有点困惑,这与功能相似吗?我仍然很难决定在模型和表格中应该使用哪个。 问题答案: ugettext() 与 uge

  • 问题内容: 在Java中,以下代码有或没有什么区别? 该文档说:“此方法永远不会正常返回。” 这是什么意思? 问题答案: 可以用于在程序退出之前运行关机钩子。这是处理大型程序中关闭程序的便捷方法,在该程序中,程序的所有部分都无法(也不应该)相互了解。然后,如果有人要退出,他可以简单地调用,然后关闭挂钩(如果设置正确)将负责执行所有必要的关闭仪式,例如关闭文件,释放资源等。 “此方法永远不会正常返回