[解決済み] Pythonから非同期で外部コマンドを実行するにはどうしたらいいですか?
2022-05-06 15:03:31
質問
Pythonスクリプトから非同期にシェルコマンドを実行する必要があります。つまり、外部コマンドの実行中にPythonスクリプトの実行を継続させ、必要な処理をさせたいのです。
この投稿を読みました。
<ブロッククオート
その後、いくつかのテストを行ってみたところ、次のようになりました。
os.system()
を使用すれば、うまくいきます。
&
をコマンドの最後に書くことで、コマンドの返送を待つ必要がありません。私が疑問に思っているのは、このようなことを達成するための適切な方法なのかどうかということです。私は
commands.call()
が、外部コマンドでブロックされるため、私にはうまくいきません。
を使うかどうか教えてください。
os.system()
を使用することが望ましいのか、それとも他の方法を試すべきでしょうか。
解決方法は?
subprocess.Popen
は、まさにあなたが望んでいることを実現しています。
from subprocess import Popen
p = Popen(['watch', 'ls']) # something long running
# ... do other stuff while subprocess is running
p.terminate()
(コメントから答えを完成させるために編集)
Popenインスタンスは、あなたができるように、他の様々なことを行うことができます。
poll()
を使用して、まだ実行されているかどうかを確認することができます。
communicate()
を使って標準入力にデータを送り、終了するのを待ちます。
関連
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?