Асинхронное выполнение внешних команд из 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()) или завершить работу.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3