Python プロセス間でデータを共有する方法を教えてください。
Pythonにおけるプロセスの間でデータを共有する方法は次のとおりです:
- マルチプロセッシング
- 値
- ネイティブの日本語で文章を言い換えると、以下のようになります。
- 価値
- 本記事は日本国内で閲覧が禁止されています。
下記にコード例を示します。
from multiprocessing import Process, Value, Array
def worker(num, arr):
num.value = 10
for i in range(len(arr)):
arr[i] = i * i
if __name__ == '__main__':
num = Value('i', 0)
arr = Array('i', range(10))
p = Process(target=worker, args=(num, arr))
p.start()
p.join()
print(num.value)
print(arr[:])
- マルチプロセッシング
- マネージャー
- 管理者
以下のコード例を参照してください。
from multiprocessing import Process, Manager
def worker(dict_data, list_data):
dict_data['key'] = 'value'
list_data.append(10)
if __name__ == '__main__':
with Manager() as manager:
dict_data = manager.dict()
list_data = manager.list()
p = Process(target=worker, args=(dict_data, list_data))
p.start()
p.join()
print(dict_data)
print(list_data)
- マルチプロセッシング
- 行列
- 待ち行列
- キュー
以下のソースコードが参考になります。
from multiprocessing import Process, Queue
def worker(q):
q.put('Hello World')
if __name__ == '__main__':
q = Queue()
p = Process(target=worker, args=(q,))
p.start()
p.join()
print(q.get())
マルチプロセッシングモジュールでは、プロセス間のデータ共有を実現するためのさまざまな手法が提供されており、必要に応じて適切な方法を選択できます。