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
  • 相关阅读:
    js Dom为页面中的元素绑定键盘或鼠标事件
    javascript中DOM获取和设置元素的内容、样式及效果
    第四十一节 固定在顶部的悬停菜单
    第四十节 定位练习
    第三十九节 层级定位
    第三十八节 固定定位
    第三十七节 绝对定位
    第三十六节 相对定位
    第三十五节 定位
    第三十四节 新闻标题练习
  • 原文地址:https://www.cnblogs.com/jinmuqq222/p/15523250.html
Copyright © 2011-2022 走看看