AFAIK,Python,使用import thread
,(或C#)不执行“真正的”多线程,这意味着所有线程都在1个CPU内核上运行。
但是在C语言中,在linux中使用pthreads,你会得到真正的多线程。
这是真的吗?
假设它是真的,当你只有1个CPU核心(我在VM中有它)时它们之间是否有任何区别?
答案 0 :(得分:2)
我不知道C#内部是如何工作的,但是对于CPython(“官方”python解释器)来说这是真的:由于GIL,线程不是真正并行。
Python解释器的其他实现不会遇到这个问题(比如C的pthreads库)。
如果您只有1个CPU,那么您将不会注意到任何差异。
作为旁注:如果在CPython中需要真正的并行性,你可以使用multiprocessing
模块,它使用进程而不是线程。
编辑:
thread
模块也有点弃用,你应该考虑使用threading
。
答案 1 :(得分:1)
Python使用称为全局解释器锁的东西,这意味着多个python线程只能在一个本机线程中运行。
官方文档中有更多文档:https://wiki.python.org/moin/GlobalInterpreterLock
单核系统不应该有真正的性能差异。在多核系统上,差异将根据您的工作而变化。 (I / O大部分不受GIL的影响)。