Mengganggu Fungsi dengan Tamat Masa dalam Python
Apabila memanggil fungsi yang mungkin terhenti selama-lamanya, menghalang skrip daripada melaksanakan selanjutnya, ia menjadi perlu untuk melaksanakan mekanisme tamat masa. Pakej isyarat Python menyediakan penyelesaian untuk isu ini.
Pakej isyarat, yang digunakan terutamanya dalam sistem UNIX, membolehkan anda menyediakan tamat masa untuk fungsi tertentu. Jika fungsi melebihi tamat masa yang ditentukan, isyarat dinaikkan untuk mengganggu pelaksanaan.
Contoh:
Pertimbangkan fungsi loop_forever() yang mungkin berjalan selama-lamanya. Kita perlu memanggil fungsi ini tetapi tetapkan masa tamat 5 saat. Jika fungsi mengambil masa lebih lama daripada 5 saat, kami ingin membatalkan pelaksanaannya.
import signal # Register a handler for the timeout def handler(signum, frame): print("Timeout! Cancelling function execution.") raise Exception("Timeout exceeded!") # Register the signal function handler signal.signal(signal.SIGALRM, handler) # Define a timeout of 5 seconds signal.alarm(5) try: loop_forever() except Exception as e: print(str(e)) # Cancel the timer if the function finishes before timeout signal.alarm(0)
Dalam contoh ini, selepas 5 saat, fungsi pengendali dipanggil, menimbulkan pengecualian. Pengecualian ini terperangkap dalam kod induk, yang kemudiannya membatalkan pemasa dan menamatkan pelaksanaan fungsi loop_forever().
Atas ialah kandungan terperinci Bagaimana untuk Mengganggu Perlaksanaan Fungsi Python dengan Tamat Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!