zoukankan      html  css  js  c++  java
  • Python--day41--线程池--python标准模块concurrent.futures

     1,线程池代码示例:(注:进程池的话只要将以下代码中的ThreadPoolExecutor替换成ProcessPoolExecutor即可,这里不演示)

    import time
    from concurrent.futures import ThreadPoolExecutor
    
    def func(n):
        time.sleep(2)
        print(n)
        return  n*n
    
    #max_workers 指定线程池多大
    #1,创建线程池
    tpool = ThreadPoolExecutor(max_workers=5) #默认 不要超过cpu个数*5
    t_lst = []
    #2,线程池异步提交
    for i in range(20):
        t = tpool.submit(func,i)
        t_lst.append(t)
    tpool.shutdown()    #close+join
    #3,获取结果
    print('主线程')
    #这一步是一定按照顺序打印的
    for t in t_lst:print('***',t.result())

    运行结果:

    2,tpool.shutdown() #close+join  如果没有shutdowm()函数,将出现边进入列表边打印现象,根据需求选择要不要这个函数

    代码示例:略

    3,线程池里面加回调函数:

     1 import time
     2 from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
     3 
     4 def func(n):
     5     time.sleep(2)
     6     print(n)
     7     return  n*n
     8 
     9 def call_back(m):
    10     print('结果是%s'%m.result(0))
    11 
    12 #max_workers 指定线程池多大
    13 #1,创建线程池
    14 tpool = ThreadPoolExecutor(max_workers=5) #默认 不要超过cpu个数*5
    15 for i in range(20):
    16     t = tpool.submit(func,i).add_done_callback(call_back)

    运行结果:

  • 相关阅读:
    5、垂直拆分---分库--mycat
    4、读写分离---双主双从(mycat)
    3、读写分离---一主一从(mycat)
    2、安装启动(Mycat)
    1、入门(Mycat)
    Nginx 相关参数记录(2)
    Nginx 相关参数记录(1)
    Linux
    一大波学习内容!
    开源镜像站
  • 原文地址:https://www.cnblogs.com/xudj/p/10347134.html
Copyright © 2011-2022 走看看