Python多处理限制为每个核心10%?
我有一个循环,我一直在努力加快。我注意到Python只使用一个内核,所以我导入了多处理包并设置了一个池。现在整个过程分布在多个核上,但它们似乎被限制在10%左右 这是预期的/最佳的吗?或者是否有一种方法可以利用每个核心的更多信息 代码:Python多处理限制为每个核心10%?,python,multithreading,multiprocessing,threadpool,python-multithreading,Python,Multithreading,Multiprocessing,Threadpool,Python Multithreading,我有一个循环,我一直在努力加快。我注意到Python只使用一个内核,所以我导入了多处理包并设置了一个池。现在整个过程分布在多个核上,但它们似乎被限制在10%左右 这是预期的/最佳的吗?或者是否有一种方法可以利用每个核心的更多信息 代码: 注:在使用池之前,htop将显示一个内核为100%,其他内核为~0%。多处理。虚拟。池是一个线程池。由于GIL,您无法充分使用多核。如果希望改用进程,请将其更改为multiprocessing.Pool 请注意,核心的总使用量还取决于getSubject的具体
注:在使用
池之前,htop将显示一个内核为100%,其他内核为~0%。多处理。虚拟。池是一个线程池。由于GIL,您无法充分使用多核。如果希望改用进程,请将其更改为multiprocessing.Pool
请注意,核心的总使用量还取决于getSubject
的具体用途。如果您正在执行一些同步(例如锁定),那么您可能也会看到性能损失
from multiprocessing.dummy import Pool as ThreadPool
//...more code here...
pool = ThreadPool(os.cpu_count())
pool.starmap(getSubject, zip(range(1, Nsub)))
pool.close()
pool.join()