多处理中的输出相关错误

时间:2018-05-12 06:48:24

标签: python python-multiprocessing python-idle

这是我的多处理代码。

from multiprocessing import Process

def print_func(continent = 'Asia'):
    print('The name of continent is: ',continent)

if __name__ == "__main__":
    names = ['America','Russia','Africa']
    procs = []
    proc = Process(target = print_func)
    procs.append(proc)
    proc.start()

    for name in names:
        proc = Process(target = print_func,args =(name,))
        procs.append(proc)
        proc.start()

    for proc in procs:
        proc.join()

但它没有输出!我做错了什么?

我想要这样的输出:

The name of continent is: Asia
The name of continent is: America
The name of continent is: Russia
The name of continent is: Africa

2 个答案:

答案 0 :(得分:2)

this answerthis bug report所述,这是IDLE的设计限制。由于IDLE仅连接到已启动的进程而不连接其子进程,因此它不会捕获输出。

在另一个Python IDE中运行代码(IDLE主要针对初学者),或者只运行没有IDE的程序,即(假设您的程序文件名为multiprint.py

python multiprint.py

答案 1 :(得分:-2)

我的Stackoverflow感觉告诉我你在python shell中粘贴它。你需要将它放入python 文件,例如void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; } ,然后像这样执行解释器

continents.py

或者,您可以删除python continents.py ,它也可以在粘贴到python shell时直接使用。

在行动here中查看。