multiprocessing

from multiprocessing import Pool

pool = Pool(processes=4,maxtasksperchild=2)

maxtasksperchild本意是每个进程最大的任务量,如果你maxtasksperchild = 2, 那么他每次干完两个任务后,就会spawn一个新的进程。

可以防止某个进程内存泄露被oom,这样可以通过原始kill进程的方式回收内存资源。

pool = Pool(2)

param_args = (args1,)

pool.apply_async(print_word, param_args)

pool.close() # 关闭进程池,表示不能在往进程池中添加进程

pool.join() # 等待进程池中的所有进程执行完毕,必须在close之后调用

当使用多进程时

传入参数如果是一个功能方法函数,直接传入函数名即可,'传入方法函数'所需要的参数也写入参数元组中;

示例1

from multiprocessing import Pool

pool = Pool(2)

param_args = (args1,)  # 传入普通参数,常量/变量参数

pool.async(print, param_args)

pool.close()

pool.join()

示例2

def print(s1, f1, s2):

    print ('print s1', s1)

    f1(s2)

def f1(s2):

    print ('print s2', s2)

pool = Pool(3)

param_args = ('hello', f1,  'world') # 传入方法

pool.async(print, param_args)

pool.close()

pool.join()

普通引用方法可以作为参数传入,在外部初始化一次

但是创建mongo 连接,需要一个进程创建一个链接,去方法内部创建,传入数据库配置、MongoDBer 方法名称

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容