Pythonでは、threading
とsubprocess
という2つのモジュールを使用して、マルチスレッドとサブプロセスを活用することができます。
マルチスレッドとは
マルチスレッドは、1つのプロセス内で複数のタスクを同時に実行する技術です。Pythonのthreading
モジュールを使用すると、マルチスレッドのプログラムを簡単に作成することができます。
以下に、Pythonでマルチスレッドを実装する基本的なコードを示します。
import threading
import time
def run(n):
print("task: {}".format(n))
time.sleep(1)
t1 = threading.Thread(target=run, args=("t1",))
t2 = threading.Thread(target=run, args=("t2",))
t1.start()
t2.start()
t1.join()
t2.join()
このコードでは、run
関数を2つのスレッドで並行に実行しています。
サブプロセスとは
サブプロセスは、新しいプロセスを生成して外部のプログラムを実行する技術です。Pythonのsubprocess
モジュールを使用すると、サブプロセスを簡単に作成することができます。
以下に、Pythonでサブプロセスを実装する基本的なコードを示します。
import subprocess
subprocess.run("echo Hello, World!", shell=True)
このコードでは、新しいサブプロセスを生成してecho
コマンドを実行しています。
マルチスレッドとサブプロセスの組み合わせ
マルチスレッドとサブプロセスを組み合わせることで、より高度な並行処理を実現することができます。例えば、以下のコードは、マルチスレッドを使用して複数のサブプロセスを並行に実行する例です。
import threading
import subprocess
import queue
def worker(q):
while True:
item = q.get()
subprocess.call("echo "+str(item), shell=True)
q.task_done()
q = queue.Queue()
for i in range(30):
q.put(i)
for _ in range(10):
t = threading.Thread(target=worker, args=(q,))
t.start()
q.join()
このコードでは、30個のecho
コマンドを10個のスレッドで並行に実行しています。
以上が、Pythonでのマルチスレッドとサブプロセスの基本的な活用方法です。これらの技術を理解し、適切に活用することで、Pythonプログラムのパフォーマンスを向上させることができます。