如何在多个内核上运行使用numpy的python程序,最好使用线程处理

2024-09-30 11:30:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想进行并行计算并将结果返回到主线程。由于这种情况经常发生,我假设进程间消息传递的开销会影响性能(这个假设正确吗?),所以我想用线程。在

据我所知,只有使用jython或ironpython(哪个更好?)时,线程才会在不同的内核上运行。在

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

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

更新:

我现在正试着按照下面的建议使用多进程。我在以一种整洁的方式传递参数时遇到了困难(也因为某些原因,当我停止应用程序运行打开的“不要关闭”进程,并且我必须重新启动计算机时!)。这就是我要做的:

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

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

查询:

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

  2. 为什么这样不行?(进程似乎不会返回…


Tags: numpy参数进程my情况argsjython性能
1条回答
网友
1楼 · 发布于 2024-09-30 11:30:59

我缺少一个包装所有东西的主函数。显然,这对多处理很重要。在

def main():
    run_my_stuff()

if __name__ == "__main__":
    main()

另外,如果您的进程正在使用的队列已满(它具有一定的容量),则会产生相同的效果,因此可以帮助更改代码,以便在添加项目时,允许同时从队列中提取项目。在

相关问题 更多 >

    热门问题