我在Windows上使用python3并试图构建一个玩具示例,演示如何使用多个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" collects the output
hmm = p.starmap(partial_calculatePixel,koord)
演示多处理速度非常简单:
{1}在这里,我们可以用一个实际的计算来代替。结果如预期:
^{pr2}$为什么不100%线性化呢?首先,将数据映射/分发到子进程并将其取回需要一些时间,上下文切换有一些开销,还有一些任务不时使用我的cpu,
time.sleep()
并不精确(也不可能在非RT操作系统上)。。。但结果与并行处理的预期大致相符。在相关问题 更多 >
编程相关推荐