ホームページ >バックエンド開発 >Python チュートリアル >Python で Ctrl+C を使用してマルチスレッド プログラムを終了する問題を解決する
上は、サービスに直接リクエストを送信するのではなく、各オンライン プログラムごとに 1 個 (cc) ずつ送信され、その数が 1 つずつ印刷される模倣プログラムです。自分の仕事が完了すると、プロセスは正常に終了します。ただし、途中で退出する場合 (圧力測定プログラムを試していますが、途中で問題が発生したため、テストを停止する必要があります)、このタスクは ps で当然ながらプロセス番号を検出できます。上の例では、この信号を捕捉し、全体の値 is_exit を変更して、この値を検出して終了します。ただし、これは非常に頻繁です。
しかし、実際にはこのプログラムは機能せず、Ctrl+C を押している間はプログラムが通常どおり実行され、デーモンでない限り、明らかに Python のサブプログラムです。ただし、デーモンの後にメイン プロセスが終了し、次にプロセス全体がすぐに終了するように設計されているため、すべてのサブ プロセスが終了した後で自身が終了するまで、メイン プロセスで各サブ プロセスの状態を検出する必要もあります。したがって、上の例 29 行の後のコードは次のように変更できます:
もう一度試してみますが、このプロセスでは Ctrl+C も使用されていません。これは、join() 関数も同様に 1 つのネットワーク上で待機しており、メイン プロセスが信号を捕捉できないためです。 ()関数数判断線程が完了したかどうか:
このように変更すると、プログラムは完全に計画どおりに実行されます。各オンライン プロセスで印刷されたすべての数字を印刷することも、途中で Ctrl + C を使用してプロセス全体を実行することもできます。
さらに、Python を使用してサービスを書き込む場合も、このようにする必要があります。有料サービスのオンライン プロセスは永続的に要求を受信しており、退出することがないため、Ctrl+C キーを押してサービス全体を削除したい場合は、上に表示されます。圧力測定プログラムはプロセスの 1 つです。引き続き、Python マルチライン プロセス中に Ctrl+C の信号を入力してプロセス全体を停止する必要があります。
1. すべての子回線プロセスをデーモンに設定します。
2. isAlive() 関数を使用して、すべての子回線プロセスが完了するかどうかを判断します。主回線中に join() 関数などを使用して完了するのではありません。
3. Ctrl+C 信号の関数の 1 つにより、全体の局所変化が変更され、各子回線プロセスが検出可能になり、正常に終了します。