我使用多进程来读取一个大文件的很多块,然后处理它,但是我丢失了一些东西,因为有时当我启动某个进程时,其中一些共享一个核心。示例:系统有12个内核,我运行10个进程,6个是en 6核(每个核一个),其他4个是en 2核(每个核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。在
谢谢。在
编辑时间:
我当然不是这个问题的专家,但看起来大多数现代处理器实际上是由物理内核和虚拟内核构成的。例如,我有一个英特尔酷睿I7,这意味着我有4个物理核,但每个核实际上包含2个虚拟核,这意味着我的处理器可以并行运行8个不同的进程。在
您提到有时每个核心有2个进程,所以这可能是由于核心虚拟化。在
顺便说一下,如果您的目标是在较小的块中处理大量数据,那么python中有一个特定的模块专用于这样的任务:Pool,它是使用
希望这对你有用, 干杯
相关问题 更多 >
编程相关推荐