线程池与进程池

线程池与进程池

​ 为什么要装到容器中

  1. 可以避免频繁的创建和销毁(进程/线程)来的资源开销
  2. 可以限制同时存在的线程数量 以保证服务器不会应为资源不足而导致崩溃
  3. 帮我们管理了线程的生命周期
  4. 管理了任务的分配
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
from threading import activeCount,enumerate,current_thread

#创建线程池
pool = ThreadPoolExecutor(2)	#同时并发线程最大数maxsize=2

def task():
    print(current_thread().name)

#提交任务并执行
pool.submit(task)
pool.submit(task)
pool.submit(task)

print(enumerate())	#获取当前主线程以及进程池中的两个线程的列表
#[<_MainThread(MainThread, started 776)>, <Thread(ThreadPoolExecutor-0_0, started daemon 23300)>, <Thread(ThreadPoolExecutor-0_1, started daemon 
22924)>]


#创建进程池
def task():
    time.sleep(1)
    print(os.getpid())


if __name__ == '__main__':
    #进程池
    pool = ProcessPoolExecutor(2)
    pool.submit(task)
    pool.submit(task)
    pool.submit(task)
posted @ 2019-07-14 15:42  wanjiang  阅读(117)  评论(0编辑  收藏  举报