Python 多处理 - 为双核、四核和六核 CPU 编码

马克·史密斯

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

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

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

这意味着每台机器将有 2、4 或 12/24 个内核,我想知道相同的代码是否会在所有机器上运行,或者我是否需要针对每台机器上的特定内核数进行定制...

我认为我的代码将创建的(最多)10 个 python 进程将在物理/虚拟内核上运行(如果有)但如果机器只有 2 或 4 个内核,那么这些进程将在可用内核与我使用线程时的情况类似 - 这是正确的吗?

我可能必须“吮吸它并看看”,但我对您可以提出的有关此主题的任何建议或信息感兴趣...

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

谢谢

马克·史密斯

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

python多处理和核心数

Windows 与 Linux 性能:

作为上述的旁注,在 Window 与 Linux 上生成 python 多处理进程存在一些性能问题,就像在 Windows 中一样,进程“繁重”并且比在 Linux 平台上需要更多的时间/资源来创建 - 这可能意味着使用多处理的 python 程序在 Linux 和 Windows 上的性能稍好一些。

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章