はじめに
しかしすでにそのスクリプトが実行中の場合、それ以上起動しないか、
またはそのプロセスを終了して改めてプロセスを起動する必要があったので調べたメモ
![f:id:ken26u:20200901202748p:plain](/wp-content/uploads/images/20200901202748.png)
起動していたら何もせず終了する
![f:id:ken26u:20200901202246p:plain](/wp-content/uploads/images/20200901202246.png)
- 何もしないというより例外が起こるというモノ
参照元
Make sure only a single instance of a program is running
前提条件
- tendo パッケージがインストールされている事
方法
起動されるプロセスに下記コードを書いておく
from tendo import singleton
me = singleton.SingleInstance() # インスタンスが既に実行中なら sys.exit(-1) が出る
Code language: PHP (php)
起動していたらプロセスを終了し改めてプロセスを実行する
![f:id:ken26u:20200901202236p:plain](/wp-content/uploads/images/20200901202236.png)
参照元
Python – Get list of running processes
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)