Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengganggu Perlaksanaan Fungsi Python dengan Tamat Masa?

Bagaimana untuk Mengganggu Perlaksanaan Fungsi Python dengan Tamat Masa?

Mary-Kate Olsen
Lepaskan: 2024-12-18 11:00:16
asal
222 orang telah melayarinya

How to Interrupt a Python Function Execution with a Timeout?

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan