2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

並列処理について

Last updated at Posted at 2024-12-10

並列処理入門

社内の勉強会で、「並列処理」についての話があったので、アウトプットのために基礎的な部分をまとめて記事にしました。

並列処理とは?

並列処理は、複数のタスクを同時に実行する技術で、主に以下のような場面で役立ちます。

  • 処理のスピードアップ: 複数の作業を同時に行うことで、全体の処理時間を短縮する
  • リアルタイム性の向上: タスクを分散して実行し、応答性を高める
  • システムリソースの有効活用: CPUやGPUの性能を最大限に引き出す

実装例:Pythonでの簡単な並列処理

Pythonを用いて、以下に簡単な例を示します。

実装例: 並列処理で複数のタスクを実行する

以下は、5つのタスクを並列に実行し、それぞれが完了するのを待つプログラムです。

コード例

import threading
import time

# タスクの定義
def task(name, duration):
    print(f"Task {name} is starting.")
    time.sleep(duration)  # 処理にかかる時間をシミュレート
    print(f"Task {name} is finished.")

# スレッドのリスト
threads = []

# 複数のタスクをスレッドで実行
for i in range(5):
    t = threading.Thread(target=task, args=(f"Task-{i+1}", 2))
    threads.append(t)
    t.start()

# 全てのタスクが完了するまで待つ
for t in threads:
    t.join()

print("All tasks are completed!")


実装例の解説

1. threadingモジュール

Python標準ライブラリのthreadingを使ってスレッドを作成しています。このモジュールを使うことで、複数のタスクを同時に実行できます。

2. task関数

タスクごとに異なる名前と実行時間を受け取り、処理をシミュレートします。

3. スレッドの生成と開始

threading.Threadクラスを使ってタスクをスレッドに割り当て、start()メソッドで実行を開始します。

4. タスクの完了待機

join()メソッドを呼び出すことで、すべてのスレッドが終了するのを待ちます。これにより、全タスクが完了してから次の処理に進みます。


実行結果

上記のコードを実行すると、以下のような結果が得られます。

Task Task-1 is starting.
Task Task-2 is starting.
Task Task-3 is starting.
Task Task-4 is starting.
Task Task-5 is starting.
Task Task-1 is finished.
Task Task-2 is finished.
Task Task-3 is finished.
Task Task-4 is finished.
Task Task-5 is finished.
All tasks are completed!

すべてのタスクが2秒間の処理時間を経て終了しますが、タスクが並列に実行されるため、全体の処理時間は約2秒です(5タスクを順次実行した場合、10秒かかります)。

勉強会の中では、スレッドとプロセスについての説明がありましたが、今回はスレッドを用いた並列処理を実装を通して経験しました。


並列処理を使うときの注意点

1. データ競合に注意

複数のスレッドが同じデータに同時にアクセスすると、予期しない結果になることがあります。必要に応じて、LockやSemaphoreを使用する。

2. オーバーヘッド

並列化に伴う管理コストが発生するため、タスクが軽量であればかえって遅くなる場合もある。

3. 適切な設計が必要

並列処理の設計ミスは、バグやパフォーマンス低下につながります。

まとめ

今回は、初歩的な内容のアウトプットと、簡単な実装で並列処理の概要を掴むことにトライしました。引き続き学習を続けて、より深い内容の理解にもチャレンジします。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?