Python多处理 - 编码双核,四核和六核cpu

时间:2017-03-01 15:55:59

标签: python multiprocessing

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

我正在编写一些代码,这些代码将使用多处理在核心/虚拟核心之间拆分任务,但我有许多机器,每个机器都有不同的CPU ......

我有一个Intel Centrino2双核,一个Intel i5四核和一个双Xeon十六进制核(带超线程)机器,可运行此代码。

这意味着每台机器都有2个,4个或12/24个核心,我想知道相同的代码是否可以在所有机器上运行,或者我是否需要根据每台机器上的特定核心数量进行定制...

我认为我的代码将创建的(最多)10个python进程将在物理/虚拟核心上运行(如果有的话),但如果机器只有2个或4个核心,则进程将运行'时间分片的'在可用内核上,就像我使用线程一样,这是正确的吗?

我一定会吮吸它并看到'但是我对你可以建议的关于这个主题的任何建议或信息感兴趣...

我计划在64位Centos Linux和Windows 10操作系统上运行代码,并使用Anaconda Python 3.6以防万一。

由于

1 个答案:

答案 0 :(得分:1)

我在Stackoverflow上发现了这个Q / A,它支持我最初的想法 - 代码将运行在任何3个cpu上,因此不需要在每个CPU的基础上进行定制...

python multiprocessing and number of cores

Windows vs Linux性能:

作为上述的一个附注,在Window vs Linux上产生python多处理过程存在一些性能问题,因为在Windows中,进程是重的'并且需要花费更多的时间/资源来创建Linux平台 - 这可能意味着使用多处理的python程序在Linux和Windows上的表现稍好一些。

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

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

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