• 进程池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之后使用
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    day 67 Django基础三之视图函数
    day 66 Django基础二之URL路由系统
  • 原文地址:https://www.cnblogs.com/anhao-world/p/15231822.html
Copyright © 2020-2023  润新知