2

我想做并行计算并将结果返回给主线程。由于这样做了很多次,我假设处理消息传递的进程开销会影响性能(这个假设是否正确?),所以我想使用线程。

据我了解 - 仅当我使用 jython 或 Ironpython(哪个更好?)时,线程才会在不同的内核上运行。

假设这是正确的 - 我所要做的就是将我的 eclipse 解释器切换到上述之一?

最后,我正在使用 numpy. 这是一个问题吗?jython/ironpython 的实现会阻碍 numpy 的性能吗?

更新:

我现在正在尝试按照以下建议使用多进程。我在以简洁的方式传递参数时遇到了麻烦(由于某种原因,当我停止应用程序运行打开的进程时,不要关闭,我必须重新启动计算机!)。这就是我想要做的:

pool = multiprocessing.Pool()
results = pool.map(my_class(param1=bla1, param2=bla2), list_args)

其中 list_args 是 my_class__call__类函数的参数列表,bla1 和 bla2 是 numpy 数组。

查询:

  1. 池的默认值为 cpu_count()。我认为这是最优的?

  2. 为什么这不起作用?(进程似乎没有返回......)

4

1 回答 1

1

我错过了一个包装一切的主要功能。显然这对于​​多处理很重要。

def main():
    run_my_stuff()

if __name__ == "__main__":
    main()

此外 - 如果您的进程正在使用的队列已满(它具有一定的容量),可能会导致相同的效果,因此它可能有助于更改代码,以便允许在添加项目的同时从队列中拉取项目.

于 2013-04-30T09:54:33.400 回答