这是我的多处理代码。
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
答案 0 :(得分:2)
如this answer和this 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中查看。