Heim  >  Artikel  >  Backend-Entwicklung  >  Artikel zur Threadpool-Nutzung des Python-Thread-Pools

Artikel zur Threadpool-Nutzung des Python-Thread-Pools

不言
不言Original
2018-05-02 14:29:342780Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung des Python-Thread-Pools Threadpool im Detail vorgestellt, der einen gewissen Referenzwert hat.

Ich arbeite derzeit an einem Videogeräteverwaltungsprojekt, einschließlich Geräten (Kamera). , DVR, NVR usw.), einschließlich Vervollständigung der Geräteinformationen, Push des Gerätestatus, Push der Geräte-Stream-Adresse usw. Wenn eine große Anzahl von Geräten gleichzeitig importiert wird und ein einzelner Thread zur Geräteerkennung verwendet wird, ist dies fällig Aufgrund der großen Anzahl von Geräten führt dies zu einer großen Verzögerung. Erwägen Sie daher Multithreading, um dieses Problem zu lösen.

Sie können den Thread-Pool mit der Python-Sprache selbst implementieren oder das Thread-Pool-Paket eines Drittanbieters verwenden. In diesem Thema werden hauptsächlich die Verwendung von Threadpool und seine spezifische Implementierung vorgestellt.

1. Installation

Installation verwenden:

pip installthreadpool

2 , verwenden Sie

(1) Threadpool-Modul einführen
(2) Thread-Funktion definieren
(3) Thread-Pool erstellen threadpool.ThreadPool()
(4) Thread-Pool erstellen Das ist erforderlich. Die zu verarbeitende Aufgabe ist threadpool.makeRequests()
(5) Legen Sie die mehreren erstellten Aufgaben in den Thread-Pool threadpool.putRequest
(6) Warten Sie, bis alle Aufgaben verarbeitet sind theadpool.pool()

import threadpool 
def ThreadFun(arg1,arg2): 
 pass 
def main(): 
 device_list=[object1,object2,object3......,objectn]#需要处理的设备个数 
 task_pool=threadpool.ThreadPool(8)#8是线程池中线程的个数 
 request_list=[]#存放任务列表 
 #首先构造任务列表 
 for device in device_list: 
 request_list.append(threadpool.makeRequests(ThreadFun,[((device, ), {})])) 
 #将每个任务放到线程池中,等待线程池中线程各自读取任务,然后进行处理,使用了map函数,不了解的可以去了解一下。 
 map(task_pool.putRequest,request_list) 
 #等待所有任务处理完成,则返回,如果没有处理完,则一直阻塞 
 task_pool.poll() 
if __name__=="__main__": 
 main()

Das Obige ist ein spezifischer Thread-Pool-Nutzungsprozess
Die spezifische Definition von Threadpool lautet wie folgt:

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

Im nächsten Abschnitt werden der oben genannte gesamte Prozess und jede Funktion im Detail vorgestellt: Python-Thread-Pool Threadpool (Implementierung)

Verwandte Empfehlungen:

Implementierung des Python-Thread-Pools Threadpool

Das obige ist der detaillierte Inhalt vonArtikel zur Threadpool-Nutzung des Python-Thread-Pools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn