Pythonのスレッドプール(スレッドプール)モジュール詳細なメモ

この記事では、小扁は、共有への皆のために、今、非常に良い感じが、また、基準となる、Pythonのスレッドプール(スレッドプール)モジュールは、ノートが説明使用について説明します。小扁は一緒にそれを見るためにフォローアップするために
同時にインポート場合、デバイスストリームアドレスやその他の機器をプッシュし、最近の機器情報サプリメント、デバイスステータスプッシュを含む機器(カメラ、DVR、NVR、など)を含め、プロジェクトのビデオデバイスの管理を行っています多数は、多数のデバイスのために、その後、シングルスレッド化デバイス検出を用いて行った場合、その問題をマルチスレッド化を検討し、より大きな遅延をもたらすでしょう。


あなたは自分の言語を達成するためのPythonのスレッドプールを使用することができ、またはあなたがスレッドプールのスレッドプールパッケージ、サードパーティ製のパッケージを使用することができ、このトピックでは、特定の実装がスレッドプールとその内部を使用して説明しています。

まず、インストールしてご紹介

pip install threadpool  
 
pool = ThreadPool(poolsize) 
requests = makeRequests(some_callable, list_of_args, callback) 
[pool.putRequest(req) for req in requests] 
pool.wait() 

1行目には、非常に多くのスレッドを表すプールサイズまで作成することができ、スレッドプールを定義します。

二行目が開いてマルチスレッド機能に作成さmakeRequests、およびコールバック関数を記述することはできません関連するパラメータとコールバック関数の機能を、呼び出すことです、デフォルトでは2つのパラメータのみを実行できる手段makeRequests、noです。

第三のラインの使用は、かなり奇妙であるすべての要求は[要求にREQためpool.putRequest(REQ)]スレッドプールに投げ込ま複数のスレッドを実行することであると等価です

リクエストでREQ用:pool.putRequest(REQ)

すべてのスレッドが仕事を終了するのを待った後、四行目。

774711191、高齢者が学んでいる方法を見て:私たちは、Pythonのバックルqunを学ぶお勧めします!基本的なWeb開発Pythonスクリプトからなど、爬虫類、ジャンゴ、データマイニング、へ[PDF、実際のソースコード]、ゼロベースのプロジェクトの戦闘データに仕上げています。どんな小さなPythonのパートナーに与えられました!毎日、ダニエルは学び、細部に注意を払う必要性に、クリックにご参加くださいする方法のいくつかを共有するために、タイミングPythonの技術を説明する学習者集会のPython

第二に、コード例

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)

複数のパラメータの関数は、最初の関数呼び出しリストがアンパック、第二辞書を解凍するとき、それはあることができます。

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

この記事のためにすべてのことだ、私は助け学習したいです

公開された35元の記事 ウォンの賞賛9 ビュー10000 +

おすすめ

転載: blog.csdn.net/haoxun02/article/details/104254533