日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python线程池模块第三方包_python线程池(threadpool)模块使用笔记详解

發布時間:2025/3/15 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python线程池模块第三方包_python线程池(threadpool)模块使用笔记详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做一個視頻設備管理的項目,設備包括(攝像機,DVR,NVR等),包括設備信息補全,設備狀態推送,設備流地址推送等,如果同時導入的設備數量較多,如果使用單線程進行設備檢測,那么由于設備數量較多,會帶來較大的延時,因此考慮多線程處理此問題。

可以使用python語言自己實現線程池,或者可以使用第三方包threadpool線程池包,本主題主要介紹threadpool的使用以及其里面的具體實現。

一、安裝與簡介 pip install threadpool

pool = ThreadPool(poolsize)

requests = makeRequests(some_callable, list_of_args, callback)

[pool.putRequest(req) for req in requests]

pool.wait()

第一行定義了一個線程池,表示最多可以創建poolsize這么多線程;

第二行是調用makeRequests創建了要開啟多線程的函數,以及函數相關參數和回調函數,其中回調函數可以不寫,default是無,也就是說makeRequests只需要2個參數就可以運行;

第三行用法比較奇怪,是將所有要運行多線程的請求扔進線程池,[pool.putRequest(req) for req in requests]等同于

for req in requests:pool.putRequest(req)

第四行是等待所有的線程完成工作后退出。

二、代碼實例 import time

def sayhello(str):

print "Hello ",str

time.sleep(2)

name_list =['xiaozi','aa','bb','cc']

start_time = time.time()

for i in range(len(name_list)):

sayhello(name_list[i])

print '%d second'% (time.time()-start_time)

改用線程池代碼,花費時間更少,更效率 import time

import threadpool

def sayhello(str):

print "Hello ",str

time.sleep(2)

name_list =['xiaozi','aa','bb','cc']

start_time = time.time()

pool = threadpool.ThreadPool(10)

requests = threadpool.makeRequests(sayhello, name_list)

[pool.putRequest(req) for req in requests]

pool.wait()

print '%d second'% (time.time()-start_time)

當函數有多個參數的情況,函數調用時第一個解包list,第二個解包dict,所以可以這樣: def hello(m, n, o):

""""""

print "m = %s, n = %s, o = %s"%(m, n, o)

if __name__ == '__main__':

# 方法1

lst_vars_1 = ['1', '2', '3']

lst_vars_2 = ['4', '5', '6']

func_var = [(lst_vars_1, None), (lst_vars_2, None)]

# 方法2

dict_vars_1 = {'m':'1', 'n':'2', 'o':'3'}

dict_vars_2 = {'m':'4', 'n':'5', 'o':'6'}

func_var = [(None, dict_vars_1), (None, dict_vars_2)]

pool = threadpool.ThreadPool(2)

requests = threadpool.makeRequests(hello, func_var)

[pool.putRequest(req) for req in requests]

pool.wait()

需要把所傳入的參數進行轉換,然后帶人線程池。 def getuserdic():

username_list=['xiaozi','administrator']

password_list=['root','','abc123!','123456','password','root']

userlist = []

for username in username_list:

user =username.rstrip()

for password in password_list:

pwd = password.rstrip()

userdic ={}

userdic['user']=user

userdic['pwd'] = pwd

tmp=(None,userdic)

userlist.append(tmp)

return userlist

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持聚米學院。

總結

以上是生活随笔為你收集整理的python线程池模块第三方包_python线程池(threadpool)模块使用笔记详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。