zoukankan      html  css  js  c++  java
  • 进程池

    # 进程池 内部维护一个进程序列,当使用时,则去进程池获取一个进程,如果进程池序列没有可供使用的进程,那么程序就等待,直到进程池中有可用进程为止。
    # 进程池中有两个方法 apply表示同步方法 apply_async表示异步方法
    from multiprocessing import Pool
    import time, os
    
    
    def foo(i):
        time.sleep(1)
        print(i)
        return i + 100
    
    
    def bar(arg):
        print(os.getpid())
        print(os.getppid())
        print('logger:', arg)
        pass
    
    
    if __name__ == '__main__':
    
        pool = Pool(5)  # 创建进程池对象,最大进程数为5,如果不写5,则默认为电脑的实际核心数
        print('main process:', os.getpid())
        bar(1)
        print('-' * 30)
    
        for i in range(100):  # 开100个任务
            pool.apply_async(func=foo, args=(i,),
                             callback=bar)  # 用进程池里的最大量(5),来跑这100个任务,callback表示回调函数(某个动作或函数执行成功后再去执行的函数)
            # pool.apply(func=foo, args=(i,))     # 同步方式,一次只能一个进程,不管你进程池里设置的是多少
    
        pool.close()
        pool.join()  # 在进程池中join要放在close的后面
        print('end')
  • 相关阅读:
    fastdfs 外网映射问题记录
    fastdfs-nginx下载报错 400
    nginx 代理 websocket
    Jenkins 安装
    实验四.2
    实验四.1
    实验三
    shiyan2
    shiyan1
    作业
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9499412.html
Copyright © 2011-2022 走看看