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------")
  • 相关阅读:
    oracle日志总结
    UIScrollView,contentOffset,contentInsert的各自特点和区别?
    js动态增加表格
    判断某个对象是不是DOM对象
    IOS 中frame与bounds的区别
    删除重复项,只取其中一条数据
    NSBundle
    React
    HTML5 postMessage 和 onmessage API 详解
    SonarQube
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8623612.html
Copyright © 2011-2022 走看看