[英]Python multiprocessing is sharing cores
我正在使用Miltiprocessing读取大量的大块文件,然后对其进行处理,但是却失去了一些东西,因为有时当我启动某个进程时,其中某些进程会共享一个内核。 示例:具有12个内核的系统,我运行10个进程,其中6个是en 6个内核(每个内核一个),其他4个是en 2个内核(每个内核两个内核)...但是有时,使用10个内核运行10个也可以正常工作处理...
码:
from multiprocessing import Process
[...]
process1=Process(target=run_thread, args=("./splited/"+file,result,))
process2=Process(target=run_thread, args=("./splited/"+file,result,))
process3=Process(target=run_thread, args=("./splited/"+file,result,))
process1.start()
process2.start()
process3.start()
[...]
process1.join()
process2.join()
process3.join()
这是我的代码示例,当我看到此问题时,我尝试使用10。
谢谢。
编辑:
我当然不是这个问题的专家,但是似乎大多数现代处理器实际上都是由物理核心和虚拟核心构成的。 例如,我有一个Intel Core I7,这意味着我有4个物理核心,但每个实际上包含2个虚拟核心,这意味着我的处理器可以并行运行8个不同的进程。
您提到有时每个核心有2个进程,这可能是由于核心虚拟化所致。
顺便说一句,如果您打算以较小的块来处理大量数据,则python中有一个专门用于以下任务的特定模块: Pool ,使用
from multiprocessing import Pool
希望这对您有用,干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.