python多進程并發(fā)的實現(xiàn)示例
虛假的并發(fā),當你調(diào)用future.result()時,它會阻塞當前線程,直到任務完成并返回結果。因此,當你在循環(huán)中調(diào)用future.result()時,程序會按順序執(zhí)行任務,而不是并發(fā)執(zhí)行。
import concurrent.futures import time # 創(chuàng)建一個進程池 process_pool = concurrent.futures.ProcessPoolExecutor(max_workers=8) # 定義任務函數(shù) def task_function(task_id): print(f"Task {task_id} started") # 執(zhí)行任務的邏輯 time.sleep(1) print(f"Task {task_id} completed") return 1 # 提交任務到進程池 def submit_task(task_id): future = process_pool.submit(task_function, task_id) return future # 示例任務列表 task_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = [] # 提交任務到進程池,并等待任務完成 futures = [] t1 =time.time() for task_id in task_list: future = submit_task(task_id) futures.append(future) # result.append(future.result()) # 等待進程池中的任務完成 concurrent.futures.wait(futures) # 關閉進程池 t2 = time.time() print(t2-t1,"s") process_pool.shutdown() print(result)
如果你想要實現(xiàn)并發(fā)執(zhí)行任務,并且在所有任務完成后獲取結果,可以使用concurrent.futures.as_completed()方法來實現(xiàn)。這個方法返回一個迭代器,可以按照任務完成的順序獲取結果。
import concurrent.futures import time # 創(chuàng)建一個進程池 process_pool = concurrent.futures.ProcessPoolExecutor(max_workers=8) # 定義任務函數(shù) def task_function(task_id): print(f"Task {task_id} started") # 執(zhí)行任務的邏輯 time.sleep(1) print(f"Task {task_id} completed") return task_id # 提交任務到進程池 def submit_task(task_id): future = process_pool.submit(task_function, task_id) return future # 示例任務列表 task_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = [] # 提交任務到進程池,并等待任務完成 futures = [] t1 = time.time() for task_id in task_list: future = submit_task(task_id) futures.append(future) # 獲取任務結果 for future in concurrent.futures.as_completed(futures): result.append(future.result()) t2 = time.time() print(t2 - t1, "s") print(result) # 關閉進程池 process_pool.shutdown()
到此這篇關于python多進程并發(fā)的實現(xiàn)示例的文章就介紹到這了,更多相關python多進程并發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Python開發(fā)Telegram?Bot的流程步驟
Telegram?Bot?是一種可以與用戶交互的機器人應用程序,通過?Telegram?的?Bot?API?與服務器通信,它可以用來處理消息、執(zhí)行命令、提供服務,如通知提醒、數(shù)據(jù)查詢和自動化任務等,本文給大家介紹了如何用?Python?開發(fā)一個?Telegram?Bot,需要的朋友可以參考下2025-01-01Python報錯:NameError:?name?‘xxx‘?is?not?defined的解決辦法
這篇文章主要給大家介紹了關于Python報錯:NameError:?name?‘xxx‘?is?not?defined的解決辦法,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-06-06