python是否会使用多处理。共享类型?

2024-04-19 10:21:50 发布

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

我用多处理.sharedTypes.Array()分配一个共享内存以进行多重处理。然而,当程序运行时,我发现内核任务占用了大量内存(比如9GB),交换内存也在增加。所以我想知道python会自动收集共享内存中分配的内存吗?你知道吗

我还查了密码多处理堆,它确实有malloc()和free()。但是在sharedtype s.py中,它只调用malloc()。你知道吗


Tags: 内存py程序运行free密码array内核共享内存
1条回答
网友
1楼 · 发布于 2024-04-19 10:21:50

最后,我找到了解决办法。我用多进程池映射要在这样的函数中执行多重处理:

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()

我仍然不确定池不释放其资源的确切原因是什么,但这就是解决方案。你知道吗

相关问题 更多 >