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]
    # 單個線程的執行
    task = pool.submit(fun,'Hello','world')
    # 判斷任務執行狀態
    print(f'task status {task.done()}')
    time.sleep(4)
    print(f'task status {task.done()}')

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


 3、獲取結果

阻塞等待

print(task.result())

批量獲取結果

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

阻塞主線程,等待執行結束再執行下一個業務

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

以上就是Python 線程池模塊之多線程操作代碼的詳細內容,更多關於Python 線程池模塊的資料請關註WalkonNet其它相關文章!

推薦閱讀: