Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengendalikan Tamat Masa Fungsi dengan Anggun dalam Python?

Bagaimanakah Saya Boleh Mengendalikan Tamat Masa Fungsi dengan Anggun dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 22:44:09808semak imbas

How Can I Gracefully Handle Function Timeouts in Python?

Pengendalian Masa Tamat Fungsi dalam Python

Apabila memanggil fungsi yang mungkin dilaksanakan selama-lamanya atau menghadapi masalah yang memerlukan penamatan skrip, mekanisme tamat masa berguna . Dalam Python, kita boleh menggunakan kaedah berikut untuk mengendalikan tamat masa fungsi dengan anggun.

Menggunakan Modul isyarat:

Jika dijalankan pada sistem UNIX, pakej isyarat menyediakan cara untuk mengendalikan tamat masa. Dengan mendaftarkan pengendali tamat masa, kami boleh membatalkan pelaksanaan fungsi jika ia melebihi had masa yang telah ditetapkan. Berikut ialah contoh menggunakan isyarat:

import signal

# Register a handler for the timeout
def handler(signum, frame):
    print("Forever is over!")
    raise Exception("end of time")

# Define a potentially long-running function
def loop_forever():
    import time
    while 1:
        print("sec")
        time.sleep(1)

# Set up the signal handler
signal.signal(signal.SIGALRM, handler)

# Define the timeout duration (in seconds)
timeout = 10
signal.alarm(timeout)

# Attempt to execute the function
try:
    loop_forever()
except Exception as exc:
    print(exc)

# Cancel the timeout after the function completes
signal.alarm(0)

Apabila fungsi loop_forever() melebihi tamat masa 10 saat, fungsi pengendali dipanggil, menimbulkan pengecualian yang boleh dikendalikan dalam kod utama.

Nota:

Adalah penting untuk menggunakan modul isyarat dengan berhati-hati. Ia tidak sepenuhnya selamat untuk benang, jadi sebaiknya elakkan menggunakannya dalam aplikasi berbilang benang.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Tamat Masa Fungsi dengan Anggun 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