2024-04-19 10:21:50 发布
网友
我用多处理.sharedTypes.Array()分配一个共享内存以进行多重处理。然而,当程序运行时,我发现内核任务占用了大量内存(比如9GB),交换内存也在增加。所以我想知道python会自动收集共享内存中分配的内存吗?你知道吗
我还查了密码多处理堆,它确实有malloc()和free()。但是在sharedtype s.py中,它只调用malloc()。你知道吗
最后,我找到了解决办法。我用多进程池映射要在这样的函数中执行多重处理:
def gemm(): pool = multiprocess.Pool(processes=4) pool.map(some_fun,arg_list) for i in xrange(10): gemm()
但是,我忘了添加池。关闭()和池.连接()之后池.map. 所以每次我给gemm打电话都要花点时间。即使引用计数为零,池也不会释放其资源。 正确的做法是添加池。关闭()和池.连接():
def gemm(): pool = multiprocess.Pool(processes=4) pool.map(some_fun,arg_list) pool.close() pool.join() for i in xrange(10): gemm()
我仍然不确定池不释放其资源的确切原因是什么,但这就是解决方案。你知道吗
最后,我找到了解决办法。我用多进程池映射要在这样的函数中执行多重处理:
但是,我忘了添加池。关闭()和池.连接()之后池.map. 所以每次我给gemm打电话都要花点时间。即使引用计数为零,池也不会释放其资源。 正确的做法是添加池。关闭()和池.连接():
我仍然不确定池不释放其资源的确切原因是什么,但这就是解决方案。你知道吗
相关问题 更多 >
编程相关推荐