App下載

Python怎么進行多線程操作?線程池模塊講解!

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

作為一個高階程序員,多線程是必須掌握的知識。在python中有一個線程池模塊可以讓開發(fā)者更加簡單快速的進行線程池的使用,接下來這篇文章就根據(jù)此來介紹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__':
    # 列表推導式
    [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__':
    # 列表推導式
    [pool.submit(fun,i,i) for i in range(20) if True]
    # 單個線程的執(zhí)行
    task = pool.submit(fun,'Hello','world')
    # 判斷任務執(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è)務

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

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



0 人點贊