在性能方面,多线程和多处理哪个更合适?
我想运行多个接收器,它们将在不同端口接收数据,但基本相同。 在性能方面,多线程和多处理哪个更合适?
I would like to run several receivers that will receive data in different ports, but are basically the same.
What is more suitable in performance aspect - Multithreading or Multiprocessing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Python 的问题在于最常见的解释器包含全局锁——通常称为 GIL。这意味着一次只有一个线程可以执行Python代码,因此多进程模型通常可以比多线程模型更有效地利用多个内核。
The trouble with Python is that the most common interpreters contain a global lock -- commonly known as the GIL. This means that only one thread can execute python code at once, so a multi-process model can often make more efficient use of multiple cores than a multi-thread model.
如果应用程序受 I/O 限制,线程就足够了(而且速度更快)。
如果它受 CPU 限制,并且您使用的是 cpython 或其他具有 GIL 的 Python 解释器,则多处理是正确的选择。
If the application is I/O-bound, threading will suffice (and be faster).
If it's CPU-bound, and you're using cpython or another Python interpreter with a GIL, multiprocessing is the right choice instead.