我想做并行计算并将结果返回给主线程。由于这样做了很多次,我假设处理消息传递的进程开销会影响性能(这个假设是否正确?),所以我想使用线程。
据我了解 - 仅当我使用 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 数组。
查询:
池的默认值为 cpu_count()。我认为这是最优的?
为什么这不起作用?(进程似乎没有返回......)