美文网首页
multiprocessing

multiprocessing

作者: EricLee_1900 | 来源:发表于2020-03-27 12:23 被阅读0次

    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 方法名称

    相关文章

      网友评论

          本文标题:multiprocessing

          本文链接:https://www.haomeiwen.com/subject/oiaoehtx.html