我正在研究python中的一个大型计算问题。线性运行该问题会将我的一个 CPU 固定为 100%。所以我使用线程库并行它。结果不是那么好。我所有的 CPU 都在使用,但它们似乎都达到了 50% 的利用率。整体性能比线性程序差。由于我的线程都是纯粹计算和独立的,它们不应该占据所有CPU的近100%吗?为什么它们会达到 50% 的上限?这是 python 内置的东西吗?
有一个全局解释器锁,这意味着在任何给定时间只有一个 Python 线程会主动运行 - 多个线程允许各种线程休眠,而另一个线程处于活动状态,但它们不会同时处于活动状态。您可能希望查看multiprocessing
模块,该模块使用多个解释器进程来解决 GIL 问题,因为每个进程都有自己的 GIL。