多处理进程不运行
Posted
技术标签:
【中文标题】多处理进程不运行【英文标题】:Multiprocessing process does not run 【发布时间】:2022-01-05 13:44:15 【问题描述】:我一直在尝试运行一个非常简单的多处理程序(下面的脚本)。但是,我得到的输出很简单:"Finished"
。进程或函数都不会产生任何输出。如何确保它们确实运行并且我得到类似于 "Function 1" "Function 2" "Finished"
的输出?
抱歉,如果这是一个重复的问题,任何帮助将不胜感激。
import multiprocessing
def func(n):
print('Function',n)
p1 = multiprocessing.Process(target=func, args=(1, ))
p2 = multiprocessing.Process(target=func, args=(2, ))
p1.start()
p2.start()
p1.join()
p2.join()
print("Finished")
计算机信息:Python 版本 3.8.8、macOS 12.0.1、Apple M1 芯片
【问题讨论】:
根据操作系统,您不会在控制台上收到子进程的标准输出输出。 多处理启动新进程,你确定它没有运行,只是输出到无处可去的标准输出?例如,您是否尝试过在此过程中创建一个文件而不是仅仅打印一些东西? 啊,是的,谢谢!将输出发送到文件有效。有没有办法让它实际打印到控制台? 【参考方案1】:尝试将__name__ == '__main__'
添加到您的代码中,以确保新的 Python 解释器可以安全地导入主模块,而不会导致意外的副作用。
def func(n):
print('Function',n)
if __name__ == '__main__':
p1 = multiprocessing.Process(target=func, args=(1, ))
p2 = multiprocessing.Process(target=func, args=(2, ))
p1.start()
p2.start()
p1.join()
p2.join()
print("Finished")
来源:Python docs
【讨论】:
也试过了,结果一样。 这很奇怪,它在我的 M1 芯片上对我有用,但在 python 3.9.2 上。也适用于 python 2.7 好的,我会尝试更新到 Python 3.9。也许这会奏效以上是关于多处理进程不运行的主要内容,如果未能解决你的问题,请参考以下文章