Python多处理正在共享核心

2024-09-27 02:27:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用多进程来读取一个大文件的很多块,然后处理它,但是我丢失了一些东西,因为有时当我启动某个进程时,其中一些共享一个核心。示例:系统有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。在

谢谢。在

编辑时间:

  • 这台机器没有多线程,所以它有12个核心,最多12个并行线程。在
  • 有时有两个以上的人共享一个核心。在
  • 瓶颈不是这个程序的IO,而是处理文件的每一行。在

Tags: runtarget核心进程argsresultprocessthread
1条回答
网友
1楼 · 发布于 2024-09-27 02:27:46

我当然不是这个问题的专家,但看起来大多数现代处理器实际上是由物理内核和虚拟内核构成的。例如,我有一个英特尔酷睿I7,这意味着我有4个物理核,但每个核实际上包含2个虚拟核,这意味着我的处理器可以并行运行8个不同的进程。在

您提到有时每个核心有2个进程,所以这可能是由于核心虚拟化。在

顺便说一下,如果您的目标是在较小的块中处理大量数据,那么python中有一个特定的模块专用于这样的任务:Pool,它是使用

from multiprocessing import Pool

希望这对你有用, 干杯

相关问题 更多 >

    热门问题