python 线程只使用了可用空间的一半 cpu
python thread using only half of available cpu
我正在 python 中处理一个大型计算问题。 运行 该问题线性地将我的一个 cpu 挂钩到 100%。所以我使用线程库将它并行化。结果不太好。我所有的 CPU 都在使用,但它们似乎都达到了 50% 的利用率。总体性能比线性程序差。因为我的线程都是纯计算和独立的,它们不应该占用几乎 100% 的所有 cpus 吗?为什么他们 运行 达到 50% 的上限?这是 python 内置的东西吗?
Python 有一个全局解释器锁,这意味着在任何给定时间只有一个 Python 线程会处于活动状态 运行 - 多个线程允许不同的线程休眠,而另一个线程处于休眠状态活跃,但他们不会同时活跃。您可能需要查看 multiprocessing
模块,它使用多个解释器进程来解决 GIL,因为每个进程都有自己的 GIL。
我正在 python 中处理一个大型计算问题。 运行 该问题线性地将我的一个 cpu 挂钩到 100%。所以我使用线程库将它并行化。结果不太好。我所有的 CPU 都在使用,但它们似乎都达到了 50% 的利用率。总体性能比线性程序差。因为我的线程都是纯计算和独立的,它们不应该占用几乎 100% 的所有 cpus 吗?为什么他们 运行 达到 50% 的上限?这是 python 内置的东西吗?
Python 有一个全局解释器锁,这意味着在任何给定时间只有一个 Python 线程会处于活动状态 运行 - 多个线程允许不同的线程休眠,而另一个线程处于休眠状态活跃,但他们不会同时活跃。您可能需要查看 multiprocessing
模块,它使用多个解释器进程来解决 GIL,因为每个进程都有自己的 GIL。