2017-05-11 6 views
0

は、私のようなコードに何かを持っていると言いますか?私は.end()、.quit()、.terminate()を試してみたのですが、コマンドウィンドウに「Process」オブジェクトの属性が「...」でないというメッセージが表示されます(Linux)Pythonのどのプロセスが殺さすることができます(ないサブプロセス)

私の特定のコードでは、私は特定の中心周波数でGNUラジオを実行しています。次に、GUIを押して、中心周波数を更新した後、プロセスを閉じて再実行して、新しい中心周波数が使用されるようにするボタンを持たせます。

+1

'.terminate()'は動作するはずです。https://docs.python.org/2/libを参照してください。 rary/multiprocessing.html#multiprocessing.Process.terminate。プロセスを終了しようとするコードを表示します。 – Barmar

+0

私はメインの外の関数で終了しようとしていましたが、それは何らかの理由でそれを好きではありませんでした。私がメインで終了しようとしたとき、それは働いた。 callBack関数を使って別のプロセスを終了しようとしています。私が何かをメインに返す機能を得ることができればそれはうまくいくと思うが、私もそれに問題がある。 – BBEng

+0

変数が 'main'の外のスコープにないので、問題は可変スコープでした。 – Barmar

答えて

1

コメント:私はそれを終了する必要があります...別のプロセス

からあなたはos.kill(...を使用してそれを行うことができます。

os.kill(PID、SIG)プロセスpidに
送信信号SIG。ホストプラットフォームで使用可能な特定の信号の定数は、信号モジュールで定義されています。例えば

os.kill(p.pid, signal.SIGTERM) 

:ドキュメント内のprocesskillに関する警告を付けろ。
パイソン»3.6.1ドキュメントmultiprocessing.Process.terminate


あなたはこのようにそれを使用する場合は、.start()からNoneだその戻り値を取得する:

if __name__ == '__main__': 
    p =Process(target=pro_a).start() 

あなたは、インスタンスのためにそれをしなければなりません:

if __name__ == '__main__': 
    p= Process(target=pro_a) 
    p.start() 
    time.sleep(5) 
    p.terminate() 
+0

これは5秒後にプロセスを終了します。別のプロセスのボタンを押した後にプロセスを終了する必要があります。 – BBEng

+0

@DamianConnorsこれは単なる例であり、あなたが望む基準を使用することができます。 – Barmar

関連する問題