小编Abu*_*fia的帖子

在 Windows 上用 Python 演示多核加速的一些示例代码是什么?

我在 Windows 上使用 Python 3 并尝试构建一个玩具示例,演示如何使用多个 CPU 内核来加速计算。玩具示例是 Mandelbrot 分形的渲染。

迄今为止:

  • 我避免了线程,因为全局解释器锁在这种情况下禁止多核
  • 我正在放弃在 Windows 上不起作用的示例代码,因为它缺乏 Linux 的分叉功能
  • 尝试使用“多处理”包。我声明 p=Pool(8) (8 是我的核心数)并使用 p.starmap(..) 委派工作。这应该会产生多个“子进程”,窗口将自动委托给不同的 CPU

但是,我无法证明任何加速,无论是由于开销还是没有实际的多处理。因此,指向具有可证明加速的玩具示例的指针将非常有帮助:-)

编辑:谢谢!这将我推向了正确的方向,我现在有了一个工作示例,该示例演示了在具有 4 个内核的 CPU 上速度翻倍。
我的代码副本和“讲义”在这里:https : //pastebin.com/c9HZ2vAV

我决定使用 Pool() 但稍后会尝试@16num 指出的“进程”替代方案。下面是 Pool() 的代码示例:

    p = Pool(cpu_count())

    #Unlike map, starmap only allows 1 input. "partial" provides a workaround
    partial_calculatePixel = partial(calculatePixel, dataarray=data) 
    koord = []
    for j in range(height):
        for k in range(width):
            koord.append((j,k))

    #Runs the calls to calculatePixel in a pool. "hmm" …
Run Code Online (Sandbox Code Playgroud)

python multicore

3
推荐指数
1
解决办法
330
查看次数

标签 统计

multicore ×1

python ×1