欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python線程池(threadpool)模塊使用筆記詳解

 更新時間:2017年11月17日 16:50:16   作者:Xiao2i  
這篇文章主要介紹了python線程池(threadpool)模塊使用筆記詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

可以使用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() 

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

第二行是調用makeRequests創(chuàng)建了要開啟多線程的函數,以及函數相關參數和回調函數,其中回調函數可以不寫,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類名和類方法cls修改類變量的值

    python類名和類方法cls修改類變量的值

    這篇文章主要介紹了python類名和類方法cls修改類變量的值,通過類對象是無法修改類變量的值的,本質其實是給類對象新添加?name?和?age?變量,下文更多的相關介紹需要的小伙伴可任意參考一下
    2022-04-04
  • python super用法及原理詳解

    python super用法及原理詳解

    這篇文章主要介紹了python super用法及原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python如何復制別人的虛擬環(huán)境

    python如何復制別人的虛擬環(huán)境

    這篇文章主要介紹了python如何復制別人的虛擬環(huán)境問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • python3讓print輸出不換行的方法

    python3讓print輸出不換行的方法

    在本篇內容里小編給大家整理的是關于python3讓print輸出不換行的方法,有需要的朋友們可以學習參考下。
    2020-08-08
  • 使用django的objects.filter()方法匹配多個關鍵字的方法

    使用django的objects.filter()方法匹配多個關鍵字的方法

    今天小編就為大家分享一篇使用django的objects.filter()方法匹配多個關鍵字的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python3中urllib庫添加請求頭的兩種方式

    Python3中urllib庫添加請求頭的兩種方式

    Python?3中的urllib模塊可以用來處理URL,包括下載和上傳文件、創(chuàng)建和讀取cookie、訪問Web?API等,本文給大家介紹Python3中urllib庫添加請求頭的兩種方式,感興趣的朋友一起看看吧
    2023-10-10
  • Python 添加命令行參數步驟

    Python 添加命令行參數步驟

    這篇文章主要介紹了Python 添加命令行參數步驟,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Django+Celery實現定時任務的示例

    Django+Celery實現定時任務的示例

    Celery是一個基于python開發(fā)的分布式任務隊列,而做python WEB開發(fā)最為流行的框架莫屬Django,本示例使用主要依賴包Django+Celery實現定時任務,感興趣的朋友一起看看吧
    2021-06-06
  • 詳解Python Qt的窗體開發(fā)的基本操作

    詳解Python Qt的窗體開發(fā)的基本操作

    這篇文章主要介紹了詳解Python Qt的窗體開發(fā)的基本操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 對python多線程中互斥鎖Threading.Lock的簡單應用詳解

    對python多線程中互斥鎖Threading.Lock的簡單應用詳解

    今天小編就為大家分享一篇對python多線程中互斥鎖Threading.Lock的簡單應用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論