私は一度に(Linuxで)もっと多くのプレーヤープログラムを実行する必要がありますが、サブプロセスごとに別々に実行したいのです。だから、私はそれを開始するときに各プレーヤーのプロセスに "ラベル"を追加するようなものを考えています。プレイヤー「1」、プレイヤー「2」、プレイヤー「3」、プレイヤー「3」、プレイヤー「3」を選択し、サブプロセスを呼び出してプレイヤー「3」のすべてのインスタンスを終了させたい。"label"でプロセスを殺すための "label"
これを行う方法?
私は一度に(Linuxで)もっと多くのプレーヤープログラムを実行する必要がありますが、サブプロセスごとに別々に実行したいのです。だから、私はそれを開始するときに各プレーヤーのプロセスに "ラベル"を追加するようなものを考えています。プレイヤー「1」、プレイヤー「2」、プレイヤー「3」、プレイヤー「3」、プレイヤー「3」を選択し、サブプロセスを呼び出してプレイヤー「3」のすべてのインスタンスを終了させたい。"label"でプロセスを殺すための "label"
これを行う方法?
すべてのラベルが一意の場合は、ラベルをキーとしてpopen
インスタンスを辞書に保存するだけです。
import subprocess
process_dict = {}
def startNewProcess(command, label):
p = subprocess.Popen(command, shell=True)
process_dict[label] = p
def killProcess(label):
if label in m_process_dict:
p = process_dict.pop(label)
p.terminate()
プロセスのラベルは一意ではないだろうか、プロセスごとに複数のラベルを持つようにしたい場合は、リストを使用して処理して、ラベルの両方を保存する方が良いかもしれ場合。
import subprocess
process_list = {}
def startNewProcess(command, labels):
p = subprocess.Popen(command, shell=True)
process_list.append({'process':p, 'labels':labels})
def killProcess(label):
for ii, entry in enumerate(process_list):
if label in entry['labels']:
entry['process'].terminate()
process_list.remove(ii)
ありがとう!これはそれを解決する必要があるように見えます。 – peter
※複数のプレーヤープログラムを一度に*意味しますか? –
subprocess.popen経由でさらに多くのインスタンスを実行する – peter