Linux系統呼叫學習——XXD
阿新 • • 發佈:2021-10-25
微信:jinmuqq222from 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())