3

Python 3 で記述されたスクリプトで子サブプロセスを強制終了することについて、非常に簡単な質問があります。

どこ、

もし私が持っているなら、

my_process = None

def open_storage():
    my_process = subprocess.Popen("waffles.exe")

def kill_children():
    my_process.kill()

を呼び出した後open_storage()、 を呼び出すとkill_children()

AttributeError: 'NoneType' object has no attribute 'kill'

しかし、もし私が持っているなら、

my_process = なし

my_process = subprocess.Popen("waffles.exe")

def kill_children():
    my_process.kill()

すべて正常に動作します。

誰かがこの奇妙な振る舞いを説明できますか? open_storage()tkinter ボタンによってトリガーされるように設計されているため、関数として持つ必要があります。

ありがとう。

4

1 に答える 1

2

グローバルを使用する必要があります。そうしないと、ローカル変数が使用されます。

def open_storage():
    global my_process
    my_process = subprocess.Popen("waffles.exe")
于 2013-07-19T23:28:28.473 に答える