如何在多核上运行使用numpy的python程序,最好使用线程
我想进行并行计算并将结果返回到主线程。由于这已经做了很多次,我假设进程间消息传递的开销会影响性能(这个假设正确吗?),所以我想使用线程 据我所知,只有在使用jython或ironpython时,线程才会在不同的内核上运行(哪个更好?) 假设这是正确的——我所要做的就是将eclipse解释器切换到上面的一个解释器 最后,我正在使用numpy。这是个问题吗?jython/ironpython的实现会阻碍numpy的性能吗 更新: 我现在正尝试按照下面的建议使用多进程。我在以整洁的方式传递参数时遇到了问题(也是由于某些原因,当我停止应用程序运行打开的进程时,请不要关闭,我必须重新启动计算机!)。这就是我想做的:如何在多核上运行使用numpy的python程序,最好使用线程,python,multithreading,numpy,multiprocessing,Python,Multithreading,Numpy,Multiprocessing,我想进行并行计算并将结果返回到主线程。由于这已经做了很多次,我假设进程间消息传递的开销会影响性能(这个假设正确吗?),所以我想使用线程 据我所知,只有在使用jython或ironpython时,线程才会在不同的内核上运行(哪个更好?) 假设这是正确的——我所要做的就是将eclipse解释器切换到上面的一个解释器 最后,我正在使用numpy。这是个问题吗?jython/ironpython的实现会阻碍numpy的性能吗 更新: 我现在正尝试按照下面的建议使用多进程。我在以整洁的方式传递参数时遇到了
pool = multiprocessing.Pool()
results = pool.map(my_class(param1=bla1, param2=bla2), list_args)
其中,list_args是类my_类的\u call_uu
函数的参数列表,bla1和bla2是numpy数组
查询:
我错过了一个包装一切的主要功能。显然,这对于多处理很重要
def main():
run_my_stuff()
if __name__ == "__main__":
main()
此外-如果进程正在使用的队列已满(它有一定的容量),也会产生同样的影响,因此可以帮助更改代码,以便在添加项目的同时从队列中提取项目。您是否考虑过使用
多处理模块而不是线程?它非常易于使用(特别是多处理.Pool
),并且允许您在CPython中使用多个内核执行CPU绑定的任务,因为每个进程都有一个单独的全局解释器锁。jython没有numpy。感谢您的评论,请查看我的更新