gpt4 book ai didi

python-3.x - 没有多处理打印输出 (Spyder)

转载 作者:行者123 更新时间:2023-12-04 01:43:52 24 4
gpt4 key购买 nike

我最近开始深入研究多处理,因为我相信我的代码可以很容易地并行化。但是,在学习教程时,我遇到了一个问题:分布在池中的函数似乎无法打印。

这是罪魁祸首:

__spec__ = None # This line is required for Spyder and not part of the actual example

from multiprocessing import Process
import os

def info(title):
print(title)
print('module name:', __name__)
print('parent process:', os.getppid())
print('process id:', os.getpid())

def f(name):
info('function f')
print('hello', name)

if __name__ == '__main__':
info('main line')
p = Process(target=f, args=('bob',))
p.start()
p.join()

我收到的输出如下:
main line 
module name: __main__
parent process: 10812
process id: 11348*

现在很明显,控制台似乎只打印了 info 函数,而不是 f 函数(使用 multiprocessing.Process)的任何输出。我在网上找到的其他示例中遇到了类似的问题:使用多处理时计算已完成并正确返回,但打印件从未显示在控制台中。

有谁知道为什么,以及如何解决这个问题?

在一个可能相关的说明中,我在 Spyder 3.2.4 中使用 Python 3.6。 Spyder 似乎有一些怪癖,因为代码中的第一行已经是允许多处理工作所需的解决方法,我发现这个问题已经讨论过 here .提到了一个类似的 Unresolved 问题 here .

我将不胜感激任何帮助,并祝大家新年快乐。

最佳答案

(此处是 Spyder 维护者)在 Spyder 的 IPython 控制台中,多处理在 Windows 上运行不佳。但是,您可以在外部终端中运行您的代码以获得您想要的结果。

为此,请访问
Run > Configuration per file > Execute in an external system terminal

关于python-3.x - 没有多处理打印输出 (Spyder),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078722/

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