Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melaksanakan Perintah Luaran Secara Asynchronous dalam Python?

Bagaimana untuk Melaksanakan Perintah Luaran Secara Asynchronous dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-10-22 20:29:03776semak imbas

How to Execute External Commands Asynchronously in Python?

Melaksanakan Perintah Luaran Secara Asynchronous daripada Python

Melaksanakan arahan luaran secara tak segerak ialah keperluan biasa dalam senario skrip. Dalam Python, ini boleh dicapai melalui pelbagai pendekatan.

Satu pilihan ialah menggunakan os.system, yang membenarkan menjalankan arahan tanpa menyekat dengan menambahkan ampersand (&) pada penghujungnya. Walau bagaimanapun, kaedah ini dianggap tidak digunakan dan tidak disyorkan kerana potensi isu dengan interaksi shell.

Pendekatan yang lebih optimum ialah menggunakan subproses.Popen, yang menyediakan API yang lebih komprehensif dan mantap untuk mengurus proses luaran. Dengan Popen, arahan boleh dilancarkan secara tidak segerak, membenarkan skrip Python meneruskan pelaksanaan sementara arahan luaran berjalan di latar belakang.

<code class="python">from subprocess import Popen
p = Popen(['watch', 'ls'])  # something long running
# ... do other stuff while subprocess is running
p.terminate()</code>

Dalam contoh ini, contoh Popen dibuat, menghantar arahan dan hujahnya . Skrip Python kemudiannya boleh meneruskan dengan tugas lain sementara arahan luaran berjalan secara tidak segerak. Kemudian, contoh Popen boleh ditanya untuk status (cth., menggunakan poll()), berkomunikasi dengan (cth., melalui communication()), atau ditamatkan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah Luaran Secara Asynchronous dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn