首页 > 编程语言 > 详细

python multiprocessing 耗内存问题

时间:2020-02-28 17:10:56      阅读:522      评论:0      收藏:0      [点我收藏+]

multiprocessing在每创建一个进程时,会将主进程的内存空间原封不动的复制一份到子进程,这样一来内存消耗很容易就翻几倍,导致程序无法运行。

究其原因,是启动进程时采用了os.fork(),使子进程继承父进程全部资源

那么如何解决呢?

1. 最有效的方法:创建完进程后,再加载大内存变量

import multiprocessing
from multiprocessing import Process, Pool, Queue

import numpy as np

# 先创建进程池,只复制当前资源
p = Pool(16)
m = multiprocessing.Manager()
q = m.JoinableQueue()

# 加载大内存变量
larg_mem = np.random.normal(1.0, 0.1, 10000000)

# 启动子进程
for i in range(100):
  p.apply_async(process, args=(i, ))

p.close()
p.join()

2. 共享内存

3. python3可以指定启动方式

multiprocessing.set_start_method(spawn)

子进程将只继承运行run()方法所需的资源。缺点是启动慢

 

python multiprocessing 耗内存问题

原文:https://www.cnblogs.com/estragon/p/12377767.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!