关于Python和C中多线程的困惑

时间:2013-12-12 12:03:05

标签: python c multithreading

AFAIK,Python,使用import thread,(或C#)不执行“真正的”多线程,这意味着所有线程都在1个CPU内核上运行。

但是在C语言中,在linux中使用pthreads,你会得到真正的多线程。

这是真的吗?

假设它是真的,当你只有1个CPU核心(我在VM中有它)时它们之间是否有任何区别?

2 个答案:

答案 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的影响)。