zoukankan      html  css  js  c++  java
  • 进程池Pool的简单使用,同步异步的区别

    #进程池
    """
    当需要创建子进程数量不多的时候,可以直接利用multiprocessing
    中的Process动态生成多个进程,但是如果上百甚至上千个任务,
    """
    
    from multiprocessing import Pool
    import os,time,random
    
    def download(i):
        print("(%s)ID号为:%d的进程开始执行"%(i,os.getpid()))
        t_start = time.time()
    
        time.sleep(random.random()*10)
    
        t_stop = time.time()
        print("(%s)ID:%d执行完毕,耗时%f秒!"%(i,os.getpid(),t_stop-t_start))
    
    
    if __name__ == "__main__":
        po = Pool(3)#定义一个进程池,最大的进程数量
        for i in range(10):
            #阻塞式的请求 自加阻塞  顺序结构
            #必须要在进程池中没有进程的的时候 才会有新进程进入进程池
            # po.apply(func=download,args=(i,))
    
            #每次循环将会用空闲出来的子进程去调用目录--异步
            # 不等待只要进程池的位置空出来就立刻补上
            po.apply_async(func=download,args=(i,))
        print("-----start-----")
        po.close()#关闭进程池 不再接受您的请求
        po.join()#等待po中的所有的子进程执行完成,必须要放在close之后
        print("-----end------")
  • 相关阅读:
    在线漏洞检测网站
    渗透测试工具库
    端口利用解析
    Linux安全脚本
    Linux常见系统故障
    Oracle
    Redis和MongoDB区别
    MHA在监控和故障转移时都做了什么
    Oracle 11g Dataguard参数详解
    Oracle
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8623612.html
Copyright © 2011-2022 走看看