我正在学习 Python。在多处理教程中,向进程添加了调试打印。该示例本身有效,但从该过程中打印“测试消息”不起作用。在流的类似示例中,从流中打印是有效的。搜索没有帮助。请解释为什么它不起作用,或者什么是聪明的阅读:-)
from multiprocessing import Process, Queue
def sq(value, q):
print('test message')
q.put(value**2)
if __name__ == "__main__":
number = 2
q = Queue()
proc = Process(target=sq,args=(number, q))
proc.start()
proc.join()
while not q.empty():
print(q.get(), end=" ")
结果证明,在 IDLE Shell 3.10.2 中,在流中打印并不适合我。在外部调试站点上工作,在 PyCharm 2021 3.3 中。社区版(特装)作品。
更新答案:我不是唯一一个有这个问题的人。在 overcoder.net 上找到了一个澄清:“这是你用来运行代码的 IDLE 的问题。IDLE 做了一个非常基本的终端仿真来处理你在其中运行的程序的输出。但是,它不能处理子进程,所以虽然它们将在后台运行,但您永远不会看到它们的输出。最简单的解决方案是从命令行运行您的代码。另一种方法是使用更复杂的 IDE。
非常感谢@Sergey Shashko,他亲自检查了所有内容,并建议我使用 PyCharm 等等!
对我(可能对其他新手)来说,一个非常重要的结论是它在基础环境中不起作用——不要挂断它,在其他环境中尝试。