python線程池threadpool使用篇
最近在做一個視頻設備管理的項目,設備包括(攝像機,DVR,NVR等),包括設備信息補全,設備狀態(tài)推送,設備流地址推送等,如果同時導入的設備數(shù)量較多,如果使用單線程進行設備檢測,那么由于設備數(shù)量較多,會帶來較大的延時,因此考慮多線程處理此問題。
可以使用python語言自己實現(xiàn)線程池,或者可以使用第三方包threadpool線程池包,本主題主要介紹threadpool的使用以及其里面的具體實現(xiàn)。
1、安裝
使用安裝:
pip installthreadpool
2、使用
(1)引入threadpool模塊
(2)定義線程函數(shù)
(3)創(chuàng)建線程 池threadpool.ThreadPool()
(4)創(chuàng)建需要線程池處理的任務即threadpool.makeRequests()
(5)將創(chuàng)建的多個任務put到線程池中,threadpool.putRequest
(6)等到所有任務處理完畢theadpool.pool()
import threadpool
def ThreadFun(arg1,arg2):
pass
def main():
device_list=[object1,object2,object3......,objectn]#需要處理的設備個數(shù)
task_pool=threadpool.ThreadPool(8)#8是線程池中線程的個數(shù)
request_list=[]#存放任務列表
#首先構造任務列表
for device in device_list:
request_list.append(threadpool.makeRequests(ThreadFun,[((device, ), {})]))
#將每個任務放到線程池中,等待線程池中線程各自讀取任務,然后進行處理,使用了map函數(shù),不了解的可以去了解一下。
map(task_pool.putRequest,request_list)
#等待所有任務處理完成,則返回,如果沒有處理完,則一直阻塞
task_pool.poll()
if __name__=="__main__":
main()
上面就是一個具體的線程池的使用流程
threadpool具體的定義如下:
class ThreadPool: """A thread pool, distributing work requests and collecting results. See the module docstring for more information. """ def __init__(self, num_workers, q_size=0, resq_size=0, poll_timeout=5): pass def createWorkers(self, num_workers, poll_timeout=5): pass def dismissWorkers(self, num_workers, do_join=False): pass def joinAllDismissedWorkers(self): pass def putRequest(self, request, block=True, timeout=None): pass def poll(self, block=False): pass def wait(self): pass
下一節(jié)會詳細介紹上面的整個流程以及每個函數(shù):python 線程池threadpool(實現(xiàn)篇)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- python線程池(threadpool)模塊使用筆記詳解
- 淺談python 線程池threadpool之實現(xiàn)
- python線程池threadpool實現(xiàn)篇
- Python線程池模塊ThreadPoolExecutor用法分析
- Python 使用threading+Queue實現(xiàn)線程池示例
- 解決python ThreadPoolExecutor 線程池中的異常捕獲問題
- python線程池 ThreadPoolExecutor 的用法示例
- Python線程池thread?pool創(chuàng)建使用及實例代碼分享
- python3線程池ThreadPoolExecutor處理csv文件數(shù)據(jù)
- Python?常用模塊threading和Thread模塊之線程池
相關文章
Python PyQt5模塊實現(xiàn)一個瀏覽器的示例代碼
在項目開發(fā)中,有的應用程序可以運行在web瀏覽器,本文主要介紹了Python PyQt5模塊實現(xiàn)一個瀏覽器的示例代碼,分享給大家,感興趣的可以了解一下2021-07-07
Python將HTML快速轉換成PDF的方法實現(xiàn)
在Web開發(fā)和報告任務中,將HTML內容轉換為PDF是一種常見需求,本文主要介紹了Python將HTML快速轉換成PDF的方法實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01
Python利用subplots_adjust方法解決圖表與畫布的間距問題
這篇文章主要介紹了如何在使用python?的?matplotlib庫繪圖時,?使用subplots_adjust()方法來調整圖表與畫布之間的間距,以及圖表與圖表之間的間距,感興趣的可以了解一下2022-04-04
如何使用python3獲取當前路徑及os.path.dirname的使用
這篇文章主要介紹了如何使用python3獲取當前路徑及os.path.dirname的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12

