zoukankan      html  css  js  c++  java
  • 线程池

    线程池的概念:

      使用concurrent模块进行并发编程的

    先上简单的代码

    import time
    from concurrent.futures import ThreadPoolExecutor
    from threading import current_thread
    
    def func(i):
        print('thread',i,current_thread())  # 线程ID
        time.sleep(1)
        print('thread %s end'%i)
    
    tp = ThreadPoolExecutor(5) # 开了5个线程
    for i in range(20):
        tp.submit(func,i)
    tp.shutdown()
    print('主线程')

    返回值

    import time
    from concurrent.futures import ThreadPoolExecutor
    from threading import current_thread
    def func(i):
        print('thread',i,current_thread())  # 线程ID
        time.sleep(1)
        print('thread %s end'%i)
        return i*'*'
    tp = ThreadPoolExecutor(5) # 实例化线程池,开了5个线程
    ret_l = []
    for i in range(20):
        ret = tp.submit(func,i)
        ret_l.append(ret)
    for ret in ret_l:
        print(ret.result())
    print('主线程')

    回调函数

    import os
    import time
    from concurrent.futures import ProcessPoolExecutor
    from threading import current_thread as cthread
    # 线程池的回调函数 子线程完成的
    def func(i):
        print('thread',i,os.getpid())
        time.sleep(1)
        print('thread %s end'%i)
        return i*'*'
    def call_back(arg):
        print('call back:',os.getpid())
        print('ret:',arg.result())
    if __name__ == '__main__':
        tp = ProcessPoolExecutor(5)
        ret_l = []
        for i in range(20):
            tp.submit(func,i).add_done_callback(call_back)
        print('主线程',os.getpid())
    # 回调函数
    # 在线程池中 由子线程完成的
    # 在进程池中 由主线程完成的
    # 线程池
    # 实例化线程池 ThreadPoolExecutor 5*cpu_count
    # 异步提交任务 submit/map
    # 阻塞直到任务完成 shutdown
    # 获取子线程的返回值 result
    # 回调函数 add_down_callback
  • 相关阅读:
    第四章 基础命令的学习
    7-7命令总结
    第三章 虚拟机的简单使用及其xshell远程工具的使用
    第二章 虚拟机的软件及其安装
    在VMware中安装CentOS系统步骤
    Pytest02-用法和调用
    Pytest01-从官方文档开始学习
    浅谈mock技术
    C/C++ malloc、calloc、realloc和alloca
    Go 知识汇总
  • 原文地址:https://www.cnblogs.com/youhongliang/p/9707972.html
Copyright © 2011-2022 走看看