[英]Confusion about multithreading in Python and C
AFAIK,Python使用import thread
(或C#)不会执行“真正的”多线程,这意味着所有线程都在1个CPU内核上运行。
但是在C语言中,在Linux中使用pthreads,您将获得真正的多线程。
这是真的 ?
假设是真的,当您只有1个CPU内核(我在VM中拥有它)时,它们之间有什么区别吗?
我不知道它是如何工作的C#内部,但CPython的(“官方” Python解释器),这是真的:线程是不是真的由于平行GIL 。 Python解释器的其他实现不会遇到此问题(例如C的pthreads库)。 但是,如果您只有1个CPU,则不会有任何区别。 附带说明:如果您需要在CPython中真正的并行性,则可以使用进程而不是线程的multiprocessing
模块。
编辑:
另外thread
模块已经过时了,您应该考虑使用threading
。
Python使用一种称为“全局解释器锁”的方法,这意味着多个python线程只能在一个本机线程中运行。
官方文档中有更多文档: https : //wiki.python.org/moin/GlobalInterpreterLock
单核系统上不应有真正的性能差异。 在多核系统上,差异将根据您的工作而有所不同。 (I / O大部分不受GIL的影响)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.