«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как асинхронно выполнять внешние команды в Python?

Как асинхронно выполнять внешние команды в Python?

Опубликовано 5 ноября 2024 г.
Просматривать:454

How to Execute External Commands Asynchronously in Python?

Асинхронное выполнение внешних команд из Python

Асинхронное выполнение внешних команд является общим требованием в сценариях сценариев. В Python этого можно достичь с помощью различных подходов.

Один из вариантов — использование os.system, который позволяет запускать команды без блокировки путем добавления амперсанда (&) в конце. Однако этот метод считается устаревшим и не рекомендуется из-за потенциальных проблем с взаимодействием оболочки.

Более оптимальный подход — использование subprocess.Popen, который предоставляет более полный и надежный API для управления внешними процессами. С помощью Popen команды можно запускать асинхронно, позволяя сценарию Python продолжать выполнение, пока внешняя команда выполняется в фоновом режиме.

from subprocess import Popen
p = Popen(['watch', 'ls'])  # something long running
# ... do other stuff while subprocess is running
p.terminate()

В этом примере создается экземпляр Popen, которому передаются команда и ее аргументы. Затем сценарий Python может приступить к выполнению других задач, пока внешняя команда выполняется асинхронно. Позже экземпляр Popen можно запросить о статусе (например, с помощью poll()), связаться с ним (например, с помощью communication()) или завершить работу.

Заявление о выпуске Эта статья перепечатана по адресу: 1729582514. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3