当前位置 博文首页 > Python 线程池模块之多线程操作代码

    Python 线程池模块之多线程操作代码

    作者:简简单单OnlineZuozuo 时间:2021-06-01 17:44

    1、线程池模块

    引入

    from concurrent.futures import ThreadPoolExecutor
    

    2、使用线程池

    一个简单的线程池使用案例

    from concurrent.futures import ThreadPoolExecutor
    import time
    
    pool = ThreadPoolExecutor(10, 'Python')
    
    def fun():
        time.sleep(1)
        print(1, end='')
    
    
    if __name__ == '__main__':
        # 列表推导式
        [pool.submit(fun) for i in range(20) if True]
    from concurrent.futures import ThreadPoolExecutor
    import time
    
    pool = ThreadPoolExecutor(10, 'Python')
    
    def fun(arg1,arg2):
        time.sleep(1)
        print(arg1, end=' ')
        print(arg2, end=' ')
    
    
    if __name__ == '__main__':
        # 列表推导式
        [pool.submit(fun,i,i) for i in range(20) if True]
        # 单个线程的执行
        task = pool.submit(fun,'Hello','world')
        # 判断任务执行状态
        print(f'task status {task.done()}')
        time.sleep(4)
        print(f'task status {task.done()}')
    
        # 获取结果的函数是阻塞的,所以他会等线程结束之后才会输出
        print(task.result())
    
    
    

     3、获取结果

    阻塞等待

    print(task.result())

    批量获取结果

    for future in as_completed(all_task):
        data = future.result()
    

    阻塞主线程,等待执行结束再执行下一个业务

    # 等待线程全部执行完毕
    wait(pool.submit(fun,1,2),return_when=ALL_COMPLETED)
    print('')
    
    js
    下一篇:没有了