Python多重处理会在不退出文件的情况下失去活动性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python多重处理会在不退出文件的情况下失去活动性相关的知识,希望对你有一定的参考价值。

我有一个问题,我的.py文件通过多重处理使用了最大的CPU,停止运行而不退出.py文件。

我正在执行繁重的任务,该任务使用旧版MacBook Pro(2012)中的所有内核。首先,该任务运行良好,在这里我可以直观地看到“活动监视器”窗口中填充了四个python3.7任务。但是,大约20分钟后,这四个python3.7从“活动监视器”中消失了。

最奇怪的部分是multiprocessing .py文件仍在运行,即它从未引发未捕获的异常也没有退出文件。

你们/姑娘们对发生的事情有什么想法吗?我的猜测是1)最有可能是脚本错误,以及2)旧计算机过热。

感谢!

编辑:以下是多进程代码,其中要执行的多进程函数为func,并以列表作为参数。希望对您有所帮助!

import multiprocessing

def main():
    pool = multiprocessing.Pool()
    for i in range(24):
        pool.apply_async(func, args = ([], ))
    pool.close()
    pool.join()

if __name__ == '__main__':
    main()
答案

使用上下文管理器正确处理关闭过程。

from multiprocessing import Pool

def main():
    with Pool() as p:
        result = p.apply_async(func, args = ([], ))
        print(result)

if __name__ == '__main__':
    main()

我不确定您对for i in range()部分的处理方式。

以上是关于Python多重处理会在不退出文件的情况下失去活动性的主要内容,如果未能解决你的问题,请参考以下文章

在不使用 VBA 的情况下突出显示 Excel 中的活动行/列?

如何在不使用“除外”python的情况下退出不和谐机器人

如何在不退出 python 脚本的情况下销毁一个 QApplication 然后运行一个新的?

在不使用多重继承的情况下避免代码重复

在不退出程序的情况下引发异常

如何在不使用终端的情况下退出 omxplayer?