[初学] python 为什么多进程在IDLE不执行,命令行执行

按照教程写的代码:

from multiprocessing import Process
import os, time

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

if __name__ == '__main__':
    print('Parent process %s.' % os.getpid())
    p = Process(target=run_proc, args=('test',))
    print('Child process will start.')
    p.start()
    p.join()
    print('Child process end.')
    time.sleep(5)

这个在IDLE执行结果如下:

Parent process 11896.
Child process will start.
Child process end.

run_proc里面那句死活不打印,在命令行执行就可以显示子进程,为什么?
如果这样的话,是不是意味着以后写多进程的程序一定要在控制台运行而不能用编译器运行?

阅读 7.9k
2 个回答

我用pycharm运行时没有问题的,你试试重新创建一个文件在运行?
纠正你的一个错误,命令行运行其实是使用python的解释器,官网的为cpython,cpython版本很多,常用的py2.7和3.6,还有jpython等等,python没有编译器,一般c和c#才有编译器,pycharm是编辑器,集成的开发环境
所以你说的在什么执行代码其实最后都是使用python解释器,输出情况的不同大概是编辑器的问题,建议按我的方法试试

我用IDLE PYTHON 3.6, 把 __name__=='__main__' 這行刪去,可以執行
而android qpython3 可以不刪也能執行,我也想知道為啥

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题