こんにちは。
本日はPythonメモです。
概要
multiprocessingモジュールは標準ライブラリに含まれます。
multiprocessingモジュールを使用することで
特定の処理を別プロセスで実行することができます。
プロセスの作成はProcess()
、
プロセスの開始はstart()
、
プロセスの終了待機はjoin()
で行います。
引数なしの関数を実行
import multiprocessing import os def func(): print(f'[func] parent process id: {os.getppid()}') print(f'[func] process id: {os.getpid()}') if __name__ == '__main__': print(f'process id: {os.getpid()}') p = multiprocessing.Process(target=func) p.start() p.join()
実行結果は以下です。
process id: 42522 [func] parent process id: 42522 [func] process id: 42524
引数ありの関数を実行
import multiprocessing import os def func(msg): print(msg) print(f'[func] parent process id: {os.getppid()}') print(f'[func] process id: {os.getpid()}') if __name__ == '__main__': print(f'process id: {os.getpid()}') p = multiprocessing.Process(target=func, args=('Hello!',)) p.start() p.join()
実行結果は以下です。
process id: 42602 Hello! [func] parent process id: 42602 [func] process id: 42605
辞書型の引数の関数を実行
import multiprocessing import os def func(**dic): print(f'{dic['id']}:{dic['name']}') print(f'[func] parent process id: {os.getppid()}') print(f'[func] process id: {os.getpid()}') if __name__ == '__main__': print(f'process id: {os.getpid()}') p = multiprocessing.Process(target=func, kwargs={'id':'001', 'name':'Bob'}) p.start() p.join()
実行結果は以下です。
process id: 42818 001:Bob [func] parent process id: 42818 [func] process id: 42822
以上です。