导读热词
比较好奇python对于多进程中copy on write机制的实际使用情况。目前从实验结果来看,python 使用multiprocessing来创建多进程时,无论数据是否不会被更改,子进程都会复制父进程的状态(内存空间数据等)。所以如果主进程耗的资源较多时,不小心就会造成不必要的大量的内存复制,从而可能导致内存爆满的情况。
示例
举个例子,假设主进程读取了一个大文件对象的所有行,然后通过multiprocessing创建工作进程,并循环地将每一行数据交给工作进程来处理:
def parse_lines(args):
#working
...
def main_logic():
f = open(filename,'r')
lines = f.readlines()
f.close()
pool = multiprocessing.Pool(processes==4)
rel = pool.map(parse_lines,itertools.izip(lines,itertools.repeat(second_args)),int(len(lines)/4))
pool.close()
pool.join()
以下是top及ps结果:
(四个子进程)