使用Python进行多处理?

时间:2015-05-11 02:04:35

标签: python python-multiprocessing

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

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

1 个答案:

答案 0 :(得分:1)

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

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

您必须知道的是,与threading模块相比,multiprocessing正在创建一个真正的流程,而不是当前流程中的一个线程。所以一个很大的不同就是性能。 Python有一个GIL(全局解释器锁),因此GIL会不时地阻塞线程,并且性能会受到影响。如果你不关心表现,threading也是一个选择。它们的两个函数非常相似,但在使用任何一个模块之前,你必须首先理解线程和进程,否则在处理管道时可能会遇到奇怪的问题。

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