\

Pythonは、その豊富なライブラリと直感的な文法により、多くの開発者に愛されています。特に、Pythonのmultiprocessingモジュールは、マルチプロセッサの利点を最大限に引き出すための強力なツールです。

マルチプロセスの基本

Pythonのmultiprocessingモジュールを使用すると、複数のプロセスを生成し、それぞれのプロセスで異なるタスクを並行して実行することができます。以下に、3つのプロセスを生成し、それぞれのプロセスで0から4までの数値を表示する基本的なコードを示します。

from multiprocessing import Process
import time

def process1():
    for i in range(5):
        time.sleep(0.5)
        print("process1:" + str(i))

def process2():
    for i in range(5):
        time.sleep(0.7)
        print("process2:" + str(i))

def process3():
    for i in range(5):
        time.sleep(0.9)
        print("process3:" + str(i))

if __name__ == '__main__':
    process1 = Process(target=process1, args=())
    process2 = Process(target=process2, args=())
    process3 = Process(target=process3, args=())

    process1.start()
    process2.start()
    process3.start()

    process1.join()
    process2.join()
    process3.join()

    print("process ended")

共有メモリの利用

プロセス間でデータを共有するためには、共有メモリを使用する必要があります。multiprocessingモジュールでは、ValueクラスとArrayクラスが提供されており、これらを使用することで、プロセス間でデータを共有することができます。

以下に、3つのプロセスが共有メモリ上の変数を操作する例を示します。

import time
from multiprocessing import Value, Array, Process

def process1(count, array):
    for i in range(5):
        time.sleep(0.5)
        count.value += 1
        array[count.value - 1] = count.value
        print("process1:" + str(count.value))

def process2(count, array):
    for i in range(5):
        time.sleep(0.7)
        count.value += 1
        array[count.value - 1] = count.value
        print("process2:" + str(count.value))

def process3(count, array):
    for i in range(5):
        time.sleep(0.9)
        count.value += 1
        array[count.value - 1] = count.value
        print("process3:" + str(count.value))

if __name__ == '__main__':
    count = Value('i', 0)
    array = Array('i', 15)

    process1 = Process(target=process1, args=[count, array])
    process2 = Process(target=process2, args=[count, array])
    process3 = Process(target=process3, args=[count, array])

    process1.start()
    process2.start()
    process3.start()

    process1.join()
    process2.join()
    process3.join()

    print(array[:])
    print("process ended")

以上のように、Pythonのmultiprocessingモジュールを使用することで、並列処理と共有メモリの管理を効果的に行うことができます。これにより、Pythonでの高性能なプログラミングが可能になります。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です