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) #のコールバック関数(コールバック関数名)
結果: