python - 为什么当我使用多处理模块时我的程序无法运行

标签 python python-3.x

我正在尝试学习多处理模块,我从互联网上找到了一些示例代码。 代码相同但结果不同。请帮忙 why my subprogram doesn't work ?

最佳答案

我可以重现您的问题的唯一方法是将进程设置为守护进程:

p1 = Process(target=piao, args=('a',))
p2 = Process(target=piao, args=('b',))
p3 = Process(target=piao, args=('c',))

p1.daemon = True
p2.daemon = True
p3.daemon = True

p1.start()
p2.start()
p3.start()

守护进程线程将继续运行,而不会阻止主程序退出。在我的系统上,Python (2.X) daemon 默认为 False。但根据3.X文档

If provided, the keyword-only daemon argument sets the process daemon flag to True or False. If None (the default), this flag will be inherited from the creating process.

这意味着 Windows 上的 Python Shell 可以在没有明确指定的情况下将进程作为守护进程运行。

要更改此设置,请将标志设置为 false:

p1.daemon = False
p2.daemon = False
p3.daemon = False

这必须在调用 start 之前完成,但对于 Python 3.6,可以在调用 Process 对象的命令中完成(请参阅 this )。

或者使用加入:

p1.daemon = True
p2.daemon = True
p3.daemon = True

p1.start()
p2.start()
p3.start()

p1.join()
p2.join()
p3.join()

print "done"

关于python - 为什么当我使用多处理模块时我的程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46416443/

相关文章:

Python 表达式到 MathML

python - 给出一个文件描述符编号,有什么办法知道它的类型吗?

python - SQLAlchemy - 映射器配置和声明性基础

python - 如何使用 Telethon 获取转发消息的 channel /聊天/用户名?

python - 调用函数时,try/except语句在哪里?

python-3.x - Pandas 合并意外产生后缀

python - 与 Python2 相比,Python3 中的相同代码速度较慢

python - 在 pyglet 或 PIL/python 中从远程服务器加载图像

python-3.x - 根据条件求和值,如果不匹配则保留当前值

python-3.x - 在 BeautifulSoup 中解析网页时获取不正确的链接