Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python多处理限制为每个核心10%?_Python_Multithreading_Multiprocessing_Threadpool_Python Multithreading - Fatal编程技术网

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的具体

我有一个循环,我一直在努力加快。我注意到Python只使用一个内核,所以我导入了多处理包并设置了一个池。现在整个过程分布在多个核上,但它们似乎被限制在10%左右

这是预期的/最佳的吗?或者是否有一种方法可以利用每个核心的更多信息

代码:


注:在使用
池之前,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()