App下載

Python怎么進(jìn)行多線程操作?線程池模塊講解!

猿友 2021-07-23 15:23:56 瀏覽數(shù) (2318)
反饋

作為一個(gè)高階程序員,多線程是必須掌握的知識(shí)。在python中有一個(gè)線程池模塊可以讓開(kāi)發(fā)者更加簡(jiǎn)單快速的進(jìn)行線程池的使用,接下來(lái)這篇文章就根據(jù)此來(lái)介紹python怎么進(jìn)行多線程操作。

1、線程池模塊

引入

from concurrent.futures import ThreadPoolExecutor

2、使用線程池

一個(gè)簡(jiǎn)單的線程池使用案例

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]
    # 單個(gè)線程的執(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ù)是阻塞的,所以他會(huì)等線程結(jié)束之后才會(huì)輸出
    print(task.result())


 3、獲取結(jié)果

阻塞等待

print(task.result())

批量獲取結(jié)果

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

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

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

以上就是python怎么進(jìn)行多線程操作的詳細(xì)內(nèi)容,更多Python高級(jí)語(yǔ)法的使用介紹請(qǐng)關(guān)注W3Cschool其它相關(guān)文章!



0 人點(diǎn)贊