8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

小さなPythonスクリプトでタスク実行を自動化しよう!

Last updated at Posted at 2025-12-07

はじめに

この記事では、小さなPythonスクリプトを使って"ちょっと便利なタスク実行ツール"を作る方法を紹介します。
特定のスクリプトを定期実行したい場合や様々な機械学習実験を(寝ている間なども)順番に実行する場合などに使えます。具体例は機械学習の話が多めですが、他の分野でも応用可能だと思います。
また、この記事で紹介する内容は、Pythonでなくとも、例えばシェルスクリプト、cron、GitHub Actionsなどを用いても同様のことを実現できることがあります。シーンに合わせて技術選定して頂ければ幸いです。

前提知識: && を使ってコマンドをつなぐ

まず前提として、ターミナルでは && を使ってコマンドをつなぐことができます。
例えば、code_a.py -> code_b.py と順番に実行したい場合は、下記のワンライナーコマンドで十分です。

python3 code_a.py &&  python3 code_b.py

応用として、機械学習実験でパラメーターを標準引数で受け取れるようにしておけば、次のように複数の実験を続けて実行できます。これで寝ている間など長時間PCを確認できない場合でも安心です。

python3 experiments/exp504/run.py exp=011-full-seed101 && python3 experiments/exp504/run.py exp=011-full-seed102 && python3 experiments/exp504/run.py exp=011-full-seed103

コマンドを繰り返す repeat.py を作る

まずは「任意のコマンドを指定回数だけ繰り返す」小さなPythonスクリプトです。
subprocessライブラリを使うことで、PythonスクリプトからPythonスクリプトを実行することができます。

# repeat.py
import sys
import subprocess

count = int(sys.argv[1])
command = sys.argv[2]

for i in range(count):
    print(f"[{i+1}/{count}] Executing: {command}")
    subprocess.run(command, shell=True)

使い方:

python3 repeat.py <繰り返し回数> "<コマンド>"

例えば、print("A")するだけのcode_a.pyを3回実行するコマンドは下記です。

python3 repeat.py 3 "python3 code_a.py"

結果:

[1/3] Executing: python3 code_a.py
A
[2/3] Executing: python3 code_a.py
A
[3/3] Executing: python3 code_a.py
A

repeat.pyによって、特定のコマンドを複数回実行する際に、ちょっと楽になりました。繰り返し回数が大きい場合に特に効果を発揮します。

待機用の sleep.py を作る

続いて、シンプルに「指定秒数待つだけ」の小さなPythonスクリプトです。

# sleep.py
import sys
import time

sec = int(sys.argv[1])
print(f"Sleeping for {sec} seconds...")
time.sleep(sec)

MacやLinuxをお使いの方は、標準の sleep コマンドを使っても同様のことが実現できます。Pythonスクリプトを用いる方法は、OSを問わず使うことができ、カスタマイズ性が高いというメリットがあります。

使い方:

python3 sleep.py <待機秒数>

300秒待つだけのコマンドは下記となります。

python3 sleep.py 300

code_a.py -> 300秒待機 -> code_b.py と順番に実行したい場合は、下記のワンライナーコマンドで実現できます。

python3 code_a.py && python3 sleep.py 300 && python3 code_b.py

sleep.pyは一定のクーリングタイムを設けたい場合などに有効です。

組み合わせ例

スクリプトAの実行を10回、1時間ごとに繰り返す

python3 repeat.py 10 "python3 code_a.py && python3 sleep.py 3600"

まとめ

  • Pythonで小さなユーティリティを書くと、作業自動化がとても楽になる
  • コマンドチェーンと組み合わせると、小規模な自動化が簡単に作れる
  • sleep.pyrepeat.py の組み合わせは相性が良い
  • 機械学習実験のバッチ実行や深夜実行にも便利

今回は省略しましたが、通知スクリプトやGPUの動作状況確認スクリプトなども組み合わせると、さらに効率化ができます。
本記事は以上です。こうしたちょっとした自動化によって、時間を少しでも多く捻出して機械学習実験を回しまくりましょう!

8
1
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
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?