zoukankan      html  css  js  c++  java
  • python 多线程

    from concurrent.futures import ThreadPoolExecutor, as_completed, wait, FIRST_COMPLETED
    from concurrent.futures import Future
    from multiprocessing import Pool
    
    #未来对象,task的返回容器
    
    
    #线程池, 为什么要线程池
    #主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值
    #当一个线程完成的时候我们主线程能立即知道
    #futures可以让多线程和多进程编码接口一致
    import time
    
    def get_html(times):
        time.sleep(times)
        print("get page {} success".format(times))
        return times
    
    
    
    executor = ThreadPoolExecutor(max_workers=2)
    #通过submit函数提交执行的函数到线程池中, submit 是立即返回
    # task1 = executor.submit(get_html, (3))
    # task2 = executor.submit(get_html, (2))
    
    
    #要获取已经成功的task的返回
    urls = [3,2,4]
    all_task = [executor.submit(get_html, (url)) for url in urls]
    wait(all_task, return_when=FIRST_COMPLETED)
    print("main")
    # for future in as_completed(all_task):
    #     data = future.result()
    #     print("get {} page".format(data))
    #通过executor的map获取已经完成的task的值
    # for data in executor.map(get_html, urls):
    #     print("get {} page".format(data))
    
    
    # #done方法用于判定某个任务是否完成
    # print(task1.done())
    # print(task2.cancel())
    # time.sleep(3)
    # print(task1.done())
    #
    # #result方法可以获取task的执行结果
    # print(task1.result())
    
    
    
    微信:jinmuqq222
  • 相关阅读:
    《软件需求十步走》阅读笔记一
    专业实训项目需求分析
    2015秋季学期个人阅读计划
    最后期限阅读笔记3
    最后期限阅读笔记2
    最后期限阅读笔记1
    你的灯亮着么阅读笔记3
    DPDK(二):准备知识7---linux虚拟网络设备
    DPDK(二)准备6---PMD
    DPDK(二):准备知识4 --- 无锁FIFO环形队列
  • 原文地址:https://www.cnblogs.com/jinmuqq222/p/15523250.html
Copyright © 2011-2022 走看看