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

    from multiprocessing import Pool
    import os,time,random
    def worker(msg):
        start_time = time.time()
        print("(%s)开始执行,进程号为(%s)"%(msg,os.getpid()))
        time.sleep(random.random()*2)
        end_time = time.time()
        print(msg,"(%s)执行完毕,执行时间为:%.2f"%(os.getpid(),end_time-start_time))
    if __name__ == '__main__':
        po = Pool(3)#定义一个进程池,最大进程数为3
        for i in range(0,6):
            po.apply_async(worker,(i,))
            # 参数:函数名,(传递给目标的参数元组)
            # 每次循环使用空闲的子进程调用函数,满足每个时刻都有三个进程在执行
        print("---开始---")
        po.close()
        po.join()
        print("---结束---")
    """
    multiprocessing.Pool的常用函数:
    apply_async(func[,args[,kwds]]):
        使用非阻塞方式调用func,并行执行
        args为传递给func的参数列表
        kwds为传递给func的关键字参数列表
    apply(func[,args[,kwds]])
        使用堵塞方式调用func  
        堵塞方式:必须等待上一个进程退出才能执行下一个进程
    close()
        关闭Pool,使其不接受新的任务
    terminate()
        无论任务是否完成,立即停止
    join()
        主进程堵塞,等待子进程的退出
        注:必须在terminate,close函数之后使用
    """

    2020-05-07

  • 相关阅读:
    spring 装配核心笔记
    小明种苹果
    线性分类器
    报数
    编程计划2.0 //不断更新
    MySQL基础之存储过程
    MySQL基础之视图
    指令系统.传送类指令
    MySQL基础之索引
    寻址方式总结
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12845673.html
Copyright © 2011-2022 走看看