Menggunakan Modul Subproses dengan Kefungsian Tamat Masa
Keperluan untuk subproses melengkapkan pelaksanaannya dalam jangka masa yang telah ditetapkan sering timbul dalam pengaturcaraan. Walaupun modul subproses menawarkan mekanisme yang teguh untuk melaksanakan perintah, modul ini sememangnya tidak mempunyai keupayaan tamat masa.
Untuk menangani had ini, Python 3.3 dan seterusnya menyediakan fungsi check_output dalam modul subproses. Fungsi ini bukan sahaja mengambil data stdout daripada arahan tetapi juga menimbulkan pengecualian apabila proses melebihi tamat masa yang ditentukan.
from subprocess import STDOUT, check_output # Set the timeout in seconds timeout = 5 try: # Execute the command with the specified timeout output = check_output(cmd, stderr=STDOUT, timeout=timeout) except CalledProcessError as e: # Handle the error if the process fails with a non-zero exit status pass # Process the merged stdout/stderr data contained in the output variable
Dalam kod ini, pembolehubah tamat masa menentukan masa pelaksanaan maksimum yang dibenarkan untuk arahan. check_output memastikan proses menamatkan dan mengembalikan output stdout/stderr gabungan dalam jangka masa yang ditetapkan.
Sebagai alternatif, untuk pengguna Python 2.x, subprocess32 backport modul subprocess menawarkan fungsi yang sama. Backport ini menyediakan penyelesaian yang setara dengan check_output, membenarkan pelaksanaan perintah yang menyedari tamat masa di bawah Python 2.x.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Masa Tamat pada Panggilan Subproses dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!