J.G*_*alt 10 multiprocessing python-3.x spyder
我最近开始深入研究多处理,因为我相信我的代码可以很容易地并行化.但是,在完成教程后,我遇到了一个问题:在池中分发的函数似乎没有打印.
这是罪魁祸首:
__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()
Run Code Online (Sandbox Code Playgroud)
我收到的输出如下:
main line
module name: __main__
parent process: 10812
process id: 11348*
Run Code Online (Sandbox Code Playgroud)
现在很明显,控制台似乎只打印信息函数,而不是f函数的任何输出(使用multiprocessing.Process).我在网上找到的其他例子遇到了类似的问题:使用多处理时计算完成并正确返回,但打印机从未显示在控制台中.
有人知道为什么,以及如何解决这个问题?
在一个可能相关的说明中,我在Spyder 3.2.4中使用Python 3.6.Spyder似乎有一些怪癖,因为代码中的第一行已经是允许多处理工作所需的解决方法,我在这里已经讨论过这个问题.这里提到了一个类似的,未解决的问题.
我要感谢任何帮助,祝大家新年快乐.
Car*_*oba 16
(Spyder维护者在这里)在Spyder的IPython控制台中,多处理在Windows上运行不正常.但是,您可以在外部终端中运行代码以获得所需的结果.
要做到这一点,请去
Run > Configuration per file > Execute in an external system terminal
| 归档时间: |
|
| 查看次数: |
6159 次 |
| 最近记录: |