実行されwordDictにわたり反復のタスクを分割します。 Global Interpreter Lockはスレッドの代わりにサブプロセスを使用します。プロセスは、 'Process'オブジェクトを作成してからstart()メソッドを呼び出すことによって生成されます。プロセスはthreading.ThreadのAPIに従います。
以下の例は、forループを持つ2つの異なる関数を並列に実行して、それぞれのプロセスを作成する方法を示しています。興味深いことに、それぞれは独自のアドレス空間(仮想メモリ)を処理します。したがって、プログラム変数はプロセス間で共有されません。これを説明するために、2つのグローバル変数を作成し、それらをローカル変数で更新するときに取るべき反対の値に設定しました。あなたが見ることができるように、彼らは反対にとどまり、更新しません。 IPC、プロセス間通信、技術を使用して、2つのプロセス間でデータを共有できます。
コード
import multiprocessing
global_any = False
global_all = True
def calculate_any(number):
local_list_any = [1,2,3]
local_result_any = any(True if i == number else False for i in local_list_any)
global_any = local_result_any
print("This is the first result within a process: {}".format(local_result_any))
def calculate_all(number):
local_list_all = [1,2,3]
local_result_all = all(True if i == number else False for i in local_list_all)
global_all = local_result_all
print("This is the second result within a process: {}".format(local_result_all))
if __name__ == "__main__":
number = 2
p1 = multiprocessing.Process(target = calculate_any, args = (number,))
p2 = multiprocessing.Process(target = calculate_all, args = (number,))
p1.start()
p2.start()
p1.join()
p2.join()
print('The result of the ANY global variable: {}'.format(global_any))
print('The result of the ALL global variable: {}'.format(global_all))
結果
The result of the ANY global variable: False
The result of the ALL global variable: True
This is the first result within a process: True
This is the second result within a process: False
参照
https://docs.python.org/2/library/multiprocessing.html
https://pymotw.com/2/multiprocessing/basics.html
https://www.youtube.com/watch?v=Lu5LrKh1Zno
と並列で、あなたは意味:マルチプロセッシング? – adelineu
より迅速かつ高品質な回答を得るには、問題を詳細に説明することが重要です。あなたは_ "私はjoblibをforループを通してループすることができません"と書いていますが、 'joblib'はあなたが提供したコードのどこにもありません。だからあなたが試したことを私たちに見せてくれないなら、あなたが間違っていることを特定することはできません。また、あなたはそれを働かせることができないということは何を意味しますか?間違った結果をもたらすか(その場合、結果は何か)、エラーを作成していますか(その場合はどのようなエラーですか?)または 'joblib'がどのように動作するかについてのあなたの質問ですか? –
あなたの質問が 'joblib 'にどう関係しているのかは不明です。また、 'for'ループでやっていることは、Pythonの組み込み並列処理ライブラリ' multiprocessing'と 'threading'のどちらからでも利益を得ることはできません**計算上の制約であり、グローバル( 'tfDict')。 – martineau