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)

    运行结果:

  • 相关阅读:
    poj 2488 DFS
    畅通工程 并查集模版
    KMP 模板
    poj 1426 DFS
    poj 2528 线段数
    poj 3468 线段数 修改区间(点)
    CVPR2012文章阅读(2)A Unified Approach to Salient Object Detection via Low Rank Matrix Recovery
    如何制定目标
    Saliency Map 最新综述
    计算机视觉模式识别重要会议杂志
  • 原文地址:https://www.cnblogs.com/xudj/p/10347134.html
Copyright © 2011-2022 走看看