使用 Python 进行多处理?

Multiprocessing with Python?

如何编写允许我进行交互式聊天会话的程序?它将 stdin 转发到其他进程,显示输出,然后等待更多用户输入?我也想实时沟通。

我在想我使用无限循环并导入sys模块并使用sys.stdin.readline()函数和sys.stdout.write()函数。我目前对如何在我的代码中实现多处理感到困惑。

multiprocessing 只是一个模块,它允许您创建另一个进程来执行您的目标函数。可以通过提供管道来传输参数和结果,您需要实现一个 reader/writer 进程来观察传入输出的管道并发送必要的参数。

https://docs.python.org/2/library/multiprocessing.html 应该给你足够的信息让你自己开始。

你必须知道的是,相对于threading模块,multiprocessing创建的是一个真正的进程,而不是当前进程中的一个线程。所以一个很大的区别是性能。 Python 有一个GIL(global interpreter lock),所以线程会时不时的被GIL阻塞,从而影响性能。如果您不关心性能,threading 也是一个选择。它们的功能都非常相似,但是在使用任何一个模块之前都必须先了解线程和进程,否则在处理管道时可能会出现奇怪的问题。

顺便说一下,我强烈建议您看一下 rpyc 模块,它会为您节省很多时间。它是一个 python RPC 模块,允许您在机器之间发送消息,使用非常简单的 API,您不必担心管道。