溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python如何進行多線程操作

發(fā)布時間:2022-02-21 15:59:29 來源:億速云 閱讀:135 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Python如何進行多線程操作”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python如何進行多線程操作”吧!

1、線程池模塊

引入

from concurrent.futures import ThreadPoolExecutor

2、使用線程池

一個簡單的線程池使用案例

from concurrent.futures import ThreadPoolExecutor
import time

pool = ThreadPoolExecutor(10, 'Python')

def fun():
    time.sleep(1)
    print(1, end='')


if __name__ == '__main__':
    # 列表推導(dǎo)式
    [pool.submit(fun) for i in range(20) if True]
from concurrent.futures import ThreadPoolExecutor
import time

pool = ThreadPoolExecutor(10, 'Python')

def fun(arg1,arg2):
    time.sleep(1)
    print(arg1, end=' ')
    print(arg2, end=' ')


if __name__ == '__main__':
    # 列表推導(dǎo)式
    [pool.submit(fun,i,i) for i in range(20) if True]
    # 單個線程的執(zhí)行
    task = pool.submit(fun,'Hello','world')
    # 判斷任務(wù)執(zhí)行狀態(tài)
    print(f'task status {task.done()}')
    time.sleep(4)
    print(f'task status {task.done()}')

    # 獲取結(jié)果的函數(shù)是阻塞的,所以他會等線程結(jié)束之后才會輸出
    print(task.result())

 3、獲取結(jié)果

阻塞等待

print(task.result())

批量獲取結(jié)果

for future in as_completed(all_task):
    data = future.result()

阻塞主線程,等待執(zhí)行結(jié)束再執(zhí)行下一個業(yè)務(wù)

# 等待線程全部執(zhí)行完畢
wait(pool.submit(fun,1,2),return_when=ALL_COMPLETED)
print('')

感謝各位的閱讀,以上就是“Python如何進行多線程操作”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python如何進行多線程操作這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI