Pythonのos.fork()
は、新しいプロセスを作成するための関数です。この関数を実行すると、親プロセスと子プロセスの2つのプロセスが作成されます。
Pythonでは、os.fork()
を実行することにより、メモリコンテキストが子プロセスにコピーされ、各プロセスはそれぞれ別のアドレス空間で動作します。
import os
pid_list = []
def main():
pid_list.append(os.getpid())
child_pid = os.fork()
if child_pid == 0:
pid_list.append(os.getpid())
print("子: こんにちは,私は子プロセスです")
print("子: 私が知っているPID番号は %s です" % pid_list)
else:
pid_list.append(os.getpid())
print("親:こんにちは,私は親プロセスです")
print("親:子プロセスのPID番号は %d です" % child_pid)
print("親:私が知っているPID番号は %s です" % pid_list)
if __name__ == "__main__":
main()
上記のコードは、os.fork()
を使用して新しいプロセスを作成し、そのプロセスIDを表示する例です。初期のプロセスは同じ320のPIDですが、子プロセスでは321を追加していることがわかり、二つのプロセス間でメモリコンテキストを共有していないことがわかります。
マルチプロセスの利用は、マルチコアCPU上でCPUの負荷の大きいタスクを実行するアプリケーションでは、現状マルチコアCPU上を活用するには必要となります。また、GILの制限がかからないため、より多くのリソースを活用でき、メモリコンテキストを共有しないため、データの破損、デッドロックが発生するリスクが軽減されます。
以上、Pythonのos.fork()
について解説しました。この関数を理解し、適切に使用することで、Pythonのマルチプロセス処理を効果的に利用することができます。