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)
    
  • 相关阅读:
    SublimeText3激活
    Mysql数据备份
    supervisor介绍与使用
    spark-submit介绍
    Spark之spark.sql
    MarkDown编写方法
    Nginx配置多级代理后获取用户真实IP
    Hive之UDF解释
    Hive之分组取前几条记录
    Hive之Map和Reduce的优化
  • 原文地址:https://www.cnblogs.com/alex3174/p/11403107.html
Copyright © 2011-2022 走看看