python多進(jìn)程并發(fā)的實現(xiàn)示例
虛假的并發(fā),當(dāng)你調(diào)用future.result()時,它會阻塞當(dāng)前線程,直到任務(wù)完成并返回結(jié)果。因此,當(dāng)你在循環(huán)中調(diào)用future.result()時,程序會按順序執(zhí)行任務(wù),而不是并發(fā)執(zhí)行。
import concurrent.futures
import time
# 創(chuàng)建一個進(jìn)程池
process_pool = concurrent.futures.ProcessPoolExecutor(max_workers=8)
# 定義任務(wù)函數(shù)
def task_function(task_id):
print(f"Task {task_id} started")
# 執(zhí)行任務(wù)的邏輯
time.sleep(1)
print(f"Task {task_id} completed")
return 1
# 提交任務(wù)到進(jìn)程池
def submit_task(task_id):
future = process_pool.submit(task_function, task_id)
return future
# 示例任務(wù)列表
task_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = []
# 提交任務(wù)到進(jìn)程池,并等待任務(wù)完成
futures = []
t1 =time.time()
for task_id in task_list:
future = submit_task(task_id)
futures.append(future)
# result.append(future.result())
# 等待進(jìn)程池中的任務(wù)完成
concurrent.futures.wait(futures)
# 關(guān)閉進(jìn)程池
t2 = time.time()
print(t2-t1,"s")
process_pool.shutdown()
print(result)
如果你想要實現(xiàn)并發(fā)執(zhí)行任務(wù),并且在所有任務(wù)完成后獲取結(jié)果,可以使用concurrent.futures.as_completed()方法來實現(xiàn)。這個方法返回一個迭代器,可以按照任務(wù)完成的順序獲取結(jié)果。
import concurrent.futures
import time
# 創(chuàng)建一個進(jìn)程池
process_pool = concurrent.futures.ProcessPoolExecutor(max_workers=8)
# 定義任務(wù)函數(shù)
def task_function(task_id):
print(f"Task {task_id} started")
# 執(zhí)行任務(wù)的邏輯
time.sleep(1)
print(f"Task {task_id} completed")
return task_id
# 提交任務(wù)到進(jìn)程池
def submit_task(task_id):
future = process_pool.submit(task_function, task_id)
return future
# 示例任務(wù)列表
task_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = []
# 提交任務(wù)到進(jìn)程池,并等待任務(wù)完成
futures = []
t1 = time.time()
for task_id in task_list:
future = submit_task(task_id)
futures.append(future)
# 獲取任務(wù)結(jié)果
for future in concurrent.futures.as_completed(futures):
result.append(future.result())
t2 = time.time()
print(t2 - t1, "s")
print(result)
# 關(guān)閉進(jìn)程池
process_pool.shutdown()
到此這篇關(guān)于python多進(jìn)程并發(fā)的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)python多進(jìn)程并發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用TensorFlow進(jìn)行圖像處理的方法
本篇文章主要介紹了使用TensorFlow進(jìn)行圖像處理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
使用python獲取PDF頁面的大小、方向和旋轉(zhuǎn)角度
在文檔管理和自動化領(lǐng)域,了解PDF文檔的內(nèi)在屬性(如頁面大小、方向和旋轉(zhuǎn)角度)對于確保一致的文檔處理和布局保真度至關(guān)重要,因為它們直接影響文檔的可讀性和用戶體驗,本文將展示如何使用Python代碼獲取PDF文檔中頁面的大小、方向和旋轉(zhuǎn)角度,需要的朋友可以參考下2024-09-09
使用Python開發(fā)Telegram?Bot的流程步驟
Telegram?Bot?是一種可以與用戶交互的機(jī)器人應(yīng)用程序,通過?Telegram?的?Bot?API?與服務(wù)器通信,它可以用來處理消息、執(zhí)行命令、提供服務(wù),如通知提醒、數(shù)據(jù)查詢和自動化任務(wù)等,本文給大家介紹了如何用?Python?開發(fā)一個?Telegram?Bot,需要的朋友可以參考下2025-01-01
Python報錯:NameError:?name?‘xxx‘?is?not?defined的解決辦法
這篇文章主要給大家介紹了關(guān)于Python報錯:NameError:?name?‘xxx‘?is?not?defined的解決辦法,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-06-06
python框架django項目部署相關(guān)知識詳解
這篇文章主要介紹了python框架django項目部署相關(guān)知識詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11

