最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python多進(jìn)程并發(fā)的實(shí)現(xiàn)示例

 更新時(shí)間:2024年02月11日 09:40:24   作者:深度學(xué)習(xí)界扛把子  
python中的多線程無(wú)法利用多核優(yōu)勢(shì),如果想要充分地使用多核CPU的資源,在python中大部分情況需要使用多進(jìn)程,本文主要介紹了python多進(jìn)程并發(fā)的實(shí)現(xiàn)示例,感興趣的可以了解一下

虛假的并發(fā),當(dāng)你調(diào)用future.result()時(shí),它會(huì)阻塞當(dāng)前線程,直到任務(wù)完成并返回結(jié)果。因此,當(dāng)你在循環(huán)中調(diào)用future.result()時(shí),程序會(huì)按順序執(zhí)行任務(wù),而不是并發(fā)執(zhí)行。

import concurrent.futures
import time

# 創(chuàng)建一個(gè)進(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)

如果你想要實(shí)現(xiàn)并發(fā)執(zhí)行任務(wù),并且在所有任務(wù)完成后獲取結(jié)果,可以使用concurrent.futures.as_completed()方法來(lái)實(shí)現(xiàn)。這個(gè)方法返回一個(gè)迭代器,可以按照任務(wù)完成的順序獲取結(jié)果。

import concurrent.futures
import time

# 創(chuàng)建一個(gè)進(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ā)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)python多進(jìn)程并發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

南郑县| 长武县| 定南县| 老河口市| 蕉岭县| 收藏| 漳州市| 博湖县| 扎兰屯市| 凌海市| 崇礼县| 东至县| 云南省| 巴东县| 永川市| 托克托县| 西华县| 东阿县| 新田县| 湘潭县| 新建县| 建水县| 德令哈市| 隆化县| 乌拉特后旗| 广宗县| 武威市| 黔西县| 东宁县| 普洱| 汤阴县| 玉环县| 德庆县| 永康市| 西吉县| 宽甸| 成武县| 金平| 绥中县| 文成县| 庄浪县|