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

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time : 2021/9/5 22:59
    # @Author : Lhtester
    # @Site : 
    # @File : pool_实例.py
    # @Software: PyCharm
    import random
    import os
    import time
    from multiprocessing import Pool
    
    #功能函数
    def worker(msg):
        #开始时间
        t_start = time.time()
        print("%s开始执行,进程号为%d"%(msg,os.getppid()))
        time.sleep(random.random()*2)#随机休眠
        #结束时间
        t_stop =time.time()
        print(msg,"执行完毕,耗时%0.f"%(t_start-t_stop))
    if __name__=='__main__':
        #定义一个进程池,最大进程数为3
        po = Pool(3)
        #循环添加任务
        for i in range(0,10):
            po.apply_async(worker,(i,))
    
        print("---start---")
        #关闭进程池,关闭后po不再接受新的请求
        po.close()
        #等待po中所有子进程执行完毕,必须放在close语句之后
        po.join()
        print("---end---")

    详解:

    1.apply_async(func[,args[,kwds]])使用非阻塞方式调用func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程),args为传递给func的参数列表,kwds为传递给func的关键字参数列表。
    2.apply(func[,args[,kwds]])使用阻塞方式调用func。是阻塞式添加任务的。
    3.close()关闭Pool,使其不再接受新的任务
    4.terminate()不管任务是否完成,立即终止
    5.join()主进程阻塞,等待子进程的退出,必须在close或terminate之后使用
  • 相关阅读:
    KMP算法
    数据库建立索引为什么会加快查询速度
    腾讯2014实习生4月20日笔试题(分析与解答)
    智能指针auto_ptr & shared_ptr
    用C++实现一个不能被继承的类
    2014金山笔试_编写一个数组类 MyVector
    TCP分组交换详解
    子网掩码的计算
    服务器端 安装svn
    yii2之ActiveForm表单使用
  • 原文地址:https://www.cnblogs.com/anhao-world/p/15231822.html
Copyright © 2011-2022 走看看