Python スレッド プール スレッドプールの使用法に関する記事

不言
リリース: 2018-05-02 14:29:34
オリジナル
2774 人が閲覧しました

この記事では主に Python スレッド プール threadpool の使用方法を詳しく紹介します。興味のある方は参考にしてください。私は現在、ビデオ機器管理プロジェクトに取り組んでいます (カメラ、DVR、NVR、など)、デバイス情報の完了、デバイス ステータスのプッシュ、デバイス ストリーム アドレスのプッシュなどが含まれます。同時にインポートされるデバイスが多数あり、デバイスの検出に単一のスレッドが使用される場合、デバイスの数が増えると、さらに大きな遅延が発生するため、この問題を処理するにはマルチスレッドを検討してください。

Python 言語を使用してスレッド プールを自分で実装することも、サードパーティのパッケージ threadpool スレッド プール パッケージを使用することもできます。このトピックでは、主に threadpool の使用方法とその特定の実装について説明します。

1. インストール:

pip installthreadpool
ログイン後にコピー


を使用して

をインストールします (1) threadpool モジュールを導入します

(2) スレッド関数を定義します (3) スレッドプール thread pool を作成します。 ThreadPool() (4) スレッドプールの処理が必要なタスク、つまり threadpool.makeRequests()

を作成します。 (5) 作成した複数のタスクをスレッドプールに入れます、threadpool.putRequest

(6) すべてのタスクが adpool で処理されるまで待ちます。 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()
ログイン後にコピー


上記はスレッドプールの具体的な利用プロセスです

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
ログイン後にコピー


次のセクションでは、上記の全体プロセスと各機能を詳しく紹介します: Python スレッド プール threadpool (実装)

関連する推奨事項:

Python スレッド プール threadpool の実装


以上がPython スレッド プール スレッドプールの使用法に関する記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!