python 執行緒池的使用

2022-06-21 04:01:44 字數 1136 閱讀 6553

cmdb 資產採集採用中控機for 迴圈主機列表挨個針對主機進行遠端資產採集並且提交資料到api,此方式為乙個乙個的資料採集並提交,在主機數量龐大的請況下此方式嚴重耗時。

再次引入執行緒池方式,例如建立10個執行緒,每次10個執行緒同時採集10個主機資訊並且入庫,先執行完任務的執行緒繼續採集後面的主機資訊,一直保持10執行緒同時執行任務。

import

requests

import

json

deftask(host):

info = #

採集主機的資產資訊

url = "

"r1 = requests.post( #

資產入庫

url=url,

data=json.dumps(info).encode('

utf-8

') #

對於字典等特殊資料格式需要json 對資料格式化處理,再編碼才能傳輸

)

print

(r1.text)

defssh():

r1 = requests.get(url='

') #

先獲取要採集資產資訊的主機列表資訊

host_list =r1.json()

from concurrent.futures import threadpoolexecutor #

建立執行緒池

pool = threadpoolexecutor(10)

for host in

host_list:

pool.submit(task,host)

#host 作為引數帶入task函式中,每次執行10個task 函式任務

view code

在for 迴圈中執行任務時,根據for 迴圈的列表元素挨個順序執行,引入執行緒池後,將每個迴圈執行的任務定義成函式task,將for 迴圈的主機名作為引數帶入任務函式task 中,定義了多少執行緒池數量,就同時執行幾個task 任務。

執行緒池數量不是越多越好,根據任務數量以及主機的cpu 等效能決定

python 執行緒池 Python的執行緒池

usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...

python 中線程池的使用

python中已經有了threading模組,為什麼還需要執行緒池呢,執行緒池又是什麼東西呢?在介紹執行緒同步的訊號量機制的時候,舉得例子是爬蟲的例子,需要控制同時爬取的執行緒數,例子中建立了20個執行緒,而同時只允許3個執行緒在執行,但是20個執行緒都需要建立和銷毀,執行緒的建立是需要消耗系統資源...

python 執行緒池 futures使用

首先導包 from concurrent.futures import threadpoolexecutor 建立執行緒池 executor threadpoolexecutor 10 測試方法 def test function num1,num2 print num1,num2 return n...