Discuss / Python / 为什么我的子进程不执行?

为什么我的子进程不执行?

Topic source

在Anaconda的Jupiter里执行下列语句:

from multiprocessing import Process

import os

# 子进程要执行的代码

def run_proc(name):

    print('Run child process %s (%s)...' % (name, os.getpid()))

if __name__=='__main__':

    print('Parent process %s.' % os.getpid())

    p1 = Process(target=run_proc, args=('test1',))

    p2 = Process(target=run_proc, args=('test2',))

    print('Child process will start.')

    p1.start()

    p2.start()

    p1.join()

    p2.join()

    p1.close()

    p2.close()

    print('Child process end.')

输出结果:

Parent process 4180.

Child process will start.

Child process end.

这个应该是子进程没有执行啊。为什么?

如果形成一个.py文件,在CMD窗口用python命令运行改文件就可以。怎么回事?

感悟旅途

#3 Created at ... [Delete] [Delete and Lock User]

在Windows中,要是想直接在编辑器中直接运行,函数最好是写在另外一个文件,主程序通过import去调用函数。这样就不会出现这种情况了。要么就在终端通过命令行 Python ***.py 运行。具体原因为什么,母鸡。反正这样操作就不容易出问题。

落之萧萧

#4 Created at ... [Delete] [Delete and Lock User]

貌似,好像,不需要写close()。close()看上去是pool里面用来“不再继续添加新process”用的

楠先森咩

#5 Created at ... [Delete] [Delete and Lock User]

在python console中可以,但是annaconda中是ipython console。如何切换,我在网上也没找到方法。

https://www.zhihu.com/question/52180208

这个网址你进去看看


  • 1

Reply