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