为什么有人说 Python 的多线程是鸡肋

2024-11-19 17:47:01
推荐回答(1个)
回答1:

要看不同情况来说了。
因为Python使用了Global interpreter lock (GIL),所以同一时间只能有一个线程运行python程序。
那么如果你用多个线程,每个线程都在做计算,那么就需要每个线程都运行python程序,这种情况下,多线程就没什么特别的利益。
但是如果你用多个线程,每个线程都需要时间来等待I/O,比如读写硬盘、等待客户端发送Http请求你好处理等等,那在这样等待的时间里,等待的线程就不需要运行python程序,别的线程如果需要运行python程序,就可以运行。这种情况下,多线程就有意义了。

另外,这个问题其实应该是针对的GIL,而不是针对Python。因为所有使用GIL的语言都是这样,最常见的就是CPython和CRuby这两个。而在JVM上运行的Jython和JRuby、在.net上运行的IronPython和IronRuby,因为没有使用GIL,所以虽然它们也是Python和Ruby,却不会存在这种问题。