ホームページ  >  記事  >  バックエンド開発  >  スレッドで subprocess.Popen クラスを使用していますが、機能しません

スレッドで subprocess.Popen クラスを使用していますが、機能しません

WBOY
WBOY転載
2024-02-22 13:13:11680ブラウズ

我正在使用带有线程的 subprocess.Popen 类,但它对我不起作用

質問内容

次のファイルがあります:

ping.py:

リーリー

メイン.py:

リーリー

このプログラムの目的は、ネットワーク デバイスが ping 可能かどうかを確認することです。 main.py ファイルを実行していますが、間違った結果が得られます。デバッグを試みましたが、スレッドの問題のようですが、解決できません。

どんな助けも歓迎します


正解


いくつかの観察

  • 前に述べたように、ping_cmd にさらに多くのコンテンツを追加し続けると、コマンドに含まれる IP アドレスがますます増えます。 ping_cmd リスト

    に追加するのではなく、毎回新しいコマンドを作成する方が良いでしょう。
  • この行を検討してください

    リーリー

    Linux の出力を見ると次のようになります:

    リーリー

    コード内で ttl (大文字) を検索すると、常に false が返されます。また、テキストを検索するために正規表現を使用する必要はありません:

    リーリー
  • utilities パッケージの内容を投稿していないため、packet_cout に相当する値が何であるかわかりません

  • マルチスレッドを扱う場合、print の代わりに logging を使用することをお勧めします。これは、前者はスレッドセーフですが、後者はスレッドセーフではないためです。

このようにして、これが私が提案する解決策です

リーリー

以上がスレッドで subprocess.Popen クラスを使用していますが、機能しませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。