• ThreadPoolExecutor 多线程


    from concurrent.futures import ThreadPoolExecutor,wait,ALL_COMPLETED
    from queue import Queue
    
    myqueue = Queue() # 队列,用于保存函数运行结果。多线程的问题之一:如何保存函数运行的结果。
    
    
    def thread_jobs(func, args,queue_):
        '''
        多线程执行入口
        :param func:函数名
        :param args:参数元组
        :param queue_: 队列,用于保存函数运行结果
        :return:
        '''
        threads = []
        executor = ThreadPoolExecutor(max_workers=10) # 10个线程
    
        for arg in args:
            temp_arg = (arg,queue_)
            t = executor.submit(func, temp_arg)
            threads.append(t)
        wait(threads, return_when=ALL_COMPLETED)
        result = list() # 用来汇总每个线程的运行结果
        while not queue_.empty():
            result.append(queue_.get())
        return result
    
    target = list(range(1000))
    
    
    # 最终要执行的方法
    def myfunc(*args):
        number = args[0][0]
        queue_ = args[0][1]
        print(number*2)
        queue_.put(number*2)
    
    result = thread_jobs(myfunc,target,queue_=myqueue) 
    print(result)
    
    
  • 相关阅读:
    Oracle-函数-split 和 splitstr 的创建
    git merge方法
    查看Android 设备进程id
    内存泄漏
    Mac显示隐藏文件快捷键
    gradle版本
    commit单一文件
    21不下发信号
    FileInputStream read函数何时返回-1
    maven turbonet目录
  • 原文地址:https://www.cnblogs.com/leimu/p/14341421.html
Copyright © 2020-2023  润新知