gpt4 book ai didi

python - 我应该每次都创建一个新的 Pool 对象还是重复使用一个?

转载 作者:太空狗 更新时间:2023-10-29 21:49:44 35 4
gpt4 key购买 nike

我正在尝试了解 Python 的 multiprocessing.Pool 对象的最佳实践。

在我的程序中,我经常使用 Pool.imap。通常,每次我并行启动任务时,我都会创建一个新的池对象,然后在完成后将其关闭。

我最近遇到了提交到池中的任务数少于进程数的挂起。奇怪的是,它只发生在我的测试管道中,它之前运行了很多东西。单独运行测试并没有导致手牌。我认为这与制作多个池有关。

我真的很想找到一些资源来帮助我了解使用 Python 多处理的最佳实践。具体来说,我目前正在尝试了解制作多个池对象与仅使用一个池对象的含义。

最佳答案

当您创建一个工作进程池时,新进程会从父进程中产生。这是一个非常快速的操作,但它有其成本。

因此,只要您没有非常充分的理由,例如由于一名工作人员意外死亡导致 Pool 中断,最好始终使用相同的 Pool 实例。

如果不检查代码,很难说出挂起的原因。您可能没有正确清理以前的实例(调用 close()/stop() 然后总是调用 join())。您可能通过 Pool channel 发送了太大的数据,这通常会导致死锁等。

如果您提交的任务少于工作人员,那么池肯定不会中断。该池的设计正是为了将任务数量与工作人员数量分离开来。

关于python - 我应该每次都创建一个新的 Pool 对象还是重复使用一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31171941/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com