zoukankan      html  css  js  c++  java
  • 并发编程--线程池与进程池

    核心思想

    以时间换空间

    进程池

    进程池:一个容器,这个容器限制住你开启进程的数量,默认是os.cpu_count(),我的电脑是8核,所以能开启8个,第一次肯定只能并行的处理8个任务,只要有任务完成,进程马上就会接下一个任务。

    代码实现:

    from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
    import os,time,random
    
    # print(os.cpu_count())
    def task(n):
        print(f"{os.getpid()} 接客")
        time.sleep(random.randint(1,3))
    
    if __name__ == '__main__':
        p = ProcessPoolExecutor()
        for i in range(30):
            p.submit(task,1)
    

    线程池

    线程池:线程最多能执行的是进程的5倍,也就是40个

    代码实现:

    from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
    import os,time,random
    
    # print(os.cpu_count())
    def task(n):
        print(f"{os.getpid()} 接客")
        time.sleep(random.randint(1,3))
    
    if __name__ == '__main__':
        # p = ProcessPoolExecutor()
        # for i in range(30):
        #     p.submit(task,1)
        t = ThreadPoolExecutor()
        for i in range(200):
            t.submit(task,i)
    
  • 相关阅读:
    linux 常用命令
    restframeword之视图,解析器
    restframework之序列化
    restframeword之APIview
    MongoDB
    redis
    mysql优化
    (java)图片像素的操作
    关于java AudioInputStream播放短音频没声音的问题
    java向文件中追加内容的一种简单方式
  • 原文地址:https://www.cnblogs.com/alex3174/p/11403107.html
Copyright © 2011-2022 走看看