Python ある常駐スクリプトを複数起動できないようにする

Python

はじめに

Python スクリプトを起動するスクリプトを書いた。

しかしすでにそのスクリプトが実行中の場合、それ以上起動しないか、

またはそのプロセスを終了して改めてプロセスを起動する必要があったので調べたメモ

起動していたら何もせず終了する

  • 何もしないというより例外が起こるというモノ

参照元

Make sure only a single instance of a program is running

stackoverflow.com

前提条件

  • tendo パッケージがインストールされている事

pypi.org

方法

起動されるプロセスに下記コードを書いておく

from tendo import singleton
me = singleton.SingleInstance() # インスタンスが既に実行中なら sys.exit(-1) が出るCode language: PHP (php)

起動していたらプロセスを終了し改めてプロセスを実行する

参照元

Python – Get list of running processes

www.geeksforgeeks.org

wmic process でプロセスの引数等を調べる

wmic process でプロセスの引数等を調べる – ざったなぶろぐ

前提条件

windows

  • wmiパッケージがインストールされている事

方法

import os
import subprocess, signal
import wmi
# wmiコンストラクターの初期化
f = wmi.WMI()
# 実行中プロセスを順番に見ていく
for process in f.Win32_Process():
    # プロセス特定条件 こちらの具体的な方法は wmic process でプロセスの引数などを調べる リンクを参照
    if "xxxxx" in str(process.CommandLine):
        # プロセスが特定できたら kill する
        os.kill(process.ProcessId, signal.SIGTERM)
# プロセスを起動する
script_path = r"xyz.py"
p = subprocess.Popen('python "{}"'.format(script_path))Code language: PHP (php)
タイトルとURLをコピーしました