Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Melaksanakan Perintah Luaran Secara Asynchronous daripada Python

Cara Melaksanakan Perintah Luaran Secara Asynchronous daripada Python

DDD
DDDasal
2024-10-22 20:46:26719semak imbas

How to Execute External Commands Asynchronously from Python

Pelaksanaan Asynchronous Commands of External Commands from Python

Dalam skrip Python, selalunya diperlukan untuk menggunakan arahan luaran yang mungkin mengambil masa yang panjang. masa untuk disiapkan. Untuk memastikan skrip Python tidak terhenti semasa arahan ini dijalankan, pelaksanaan tak segerak dikehendaki. Percubaan sebelumnya menggunakan os.system() telah memasukkan penggunaan & untuk mencabut arahan daripada aliran skrip, tetapi kesesuaian pendekatan ini boleh dipersoalkan.

Penyelesaian yang lebih berkesan ialah fungsi subproses.Popen. Dengan Popen, anda boleh melancarkan arahan luaran tanpa menyekat pelaksanaan skrip Python. Pertimbangkan contoh berikut:

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

Coretan kod ini menggunakan Popen untuk memulakan arahan jangka panjang (seperti 'watch ls'). Skrip Python kemudiannya boleh meneruskan tugasnya sendiri sementara arahan luaran kekal aktif. Apabila sesuai, tika Popen boleh ditamatkan menggunakan kaedah terminate().

Selain itu, Popen menawarkan fungsi tambahan seperti pengundian untuk status, menghantar input melalui stdin dan menunggu penamatan. Dengan memanfaatkan subproses.Popen, anda boleh menyepadukan pelaksanaan perintah luaran tak segerak dengan lancar ke dalam skrip Python anda.

Atas ialah kandungan terperinci Cara Melaksanakan Perintah Luaran Secara Asynchronous daripada 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