双、四核和六核cpu的Python多处理编码

2024-10-03 19:21:51 发布

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

我有一个关于Python多处理的快速问题。在

我正在写一些代码,它将使用多处理器在核心/虚拟核心之间分割任务,但是我有很多机器,每个机器都有不同的CPU。。。在

我有一个Intel Centrino2双核,一个Intel i5四核和一个双核Xeon hex-core(带超线程)机器来运行这段代码。在

这意味着每台机器将有2,4或12/24核心,我想知道是否相同的代码将运行在所有的机器上,或者我是否需要为每台机器上的特定数量的核心定制它。。。在

我在想,我的代码将创建的(最多)10个python进程将在一个物理/虚拟内核上运行,如果一个可用,但是如果机器只有2个或4个内核,那么这些进程将在可用的内核上“时间切片”运行,就像我使用线程时一样-这是正确的吗?在

我很可能不得不“吸它,看看”,但我对任何有关这个主题的建议或信息感兴趣,你可以建议。。。在

我计划在64位Centos Linux和Windows10操作系统上运行代码,并使用AnacondaPython3.6,以防有用。在

谢谢


Tags: 代码core机器核心数量进程cpu内核
1条回答
网友
1楼 · 发布于 2024-10-03 19:21:51

我在Stackoverflow上找到了这个Q/A,它支持我最初的想法——代码将在3个cpu中的任何一个上运行,因此不需要根据每个cpu进行定制。。。在

python multiprocessing and number of cores

Windows与Linux性能对比:

作为上面的一个补充说明,在Windows和Linux上生成python多处理进程有一些性能问题,因为在Windows中,进程是“重”的,需要比Linux平台上更多的时间/资源来创建-这可能意味着使用多处理的python程序在Linux和Windows上的性能稍好一些。在

通过多进程队列在进程之间共享数据(概述):

Python多处理与线程处理的不同之处在于,每个进程都在自己的地址空间中运行,因此默认情况下,进程中包含的任何数据都不可用于其他进程—下面是一个很好的视频,它解释了如何使用队列在进程之间共享数据。在

https://www.youtube.com/watch?v=sp7EhjLkFY4

相关问题 更多 >