python_並行プログラミング - スレッドプール

1.スレッドプール

インポートから concurrent.futuresのインポートThreadPoolExecutor


DEF FUNC(N):
    time.sleep( 2 プリント(N)


t_pool = ThreadPoolExecutor(max_workers = 5)  スレッドプールオブジェクトを作成し、設定スレッドプールのサイズは、CPU 5 *の数を超えてはならない
ため、I レンジ(20 ):
    t_pool.submit(FUNC、ⅰ) #     プロセスプールを開始する(パラメータは、関数が実行渡さ)

結果:2秒毎に、印刷するための5の乱数。

インポートから concurrent.futuresのインポートThreadPoolExecutor


DEF FUNC(N):
    time.sleep( 2 プリント(N)


t_pool = ThreadPoolExecutor(max_workers = 5)  スレッドプールオブジェクトを作成し、設定スレッドプールのサイズは、CPU 5 *の数を超えてはならない
ため、I レンジ(20 ):
    t_pool.submit(FUNC、I)    は、プロセスプールを、(関数は、パラメータ渡しを実行)を開始 
t_pool.shutdown()  スレッドプールが実行され、メインスレッドの内容を実行します。
印刷メインスレッド!

結果:

スレッドプールの関数の戻り値を削除2.

concurrent.futuresのインポートThreadPoolExecutor


デフFUNC(N):
     リターンのn * n個


t_pool = ThreadPoolExecutor(max_workers = 5)  スレッドプールのサイズを設定するスレッドプールオブジェクトを作成し、CPUの5 *数超えないように推奨され 
t_listを= []
 のための I におけるレンジ(20 ):
    、プロセスプールの戻り値を受信し 
    、T = t_pool.submit (FUNC、I)
    、リストに追加された値を返します
    t_list.append(t)を
t_pool.shutdown()  スレッドプールが実行され、それはメインスレッドの内容を実行します。
印刷!メインスレッドのために I t_list:
     印刷(i.result())  結果の方法、値のリストを印刷します

結果:

 

 3.プロセスプール

  ProcessPoolExecutorモジュール、同じ方法およびスレッドプールを導入します。

4.map()メソッド

concurrent.futures 輸入ThreadPoolExecutorの
 インポート


DEF FUNC(N):
    time.sleep( 2 プリント(N)


t_pool = ThreadPoolExecutor(max_workers = 5)  スレッドプールのサイズを設定するスレッドプールオブジェクトを作成し、CPUの5 *数超えないように推奨され 
t_pool.map(FUNC、レンジ(20))    パラメータを渡し、関数が実行される(プロセス・プールを開始します(反復可能))

結果:2秒毎に、印刷するための5の乱数。mapメソッドは、関数の戻り値を取得することはできません。

コールバック関数

 

concurrent.futuresのインポートThreadPoolExecutor


デフFUNC(N):
     リターンのn * n個


DEF (m)をcall_back:
     プリント' コールバック:'、m.result())  mが目的である、この方法は、取得する値を結果が必要


t_pool = ThreadPoolExecutor(max_workers = 5 
t_pool.submit(FUNC、 5).add_done_callback(call_back)  コールバック関数(コールバック関数名)

 

結果:

 

 

 

おすすめ

転載: www.cnblogs.com/wangdianchao/p/12141665.html
おすすめ