Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mengendalikan Masa Tamat Fungsi dalam Python?

Bagaimana Mengendalikan Masa Tamat Fungsi dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-12-24 10:13:45300semak imbas

How to Handle Function Timeouts in Python?

Mengendalikan Tamat Masa Fungsi dalam Python

Apabila memanggil fungsi yang mungkin terhenti, menjadi penting untuk menyediakan mekanisme untuk mengendalikan dengan anggun situasi sedemikian dan menghalang skrip daripada membeku selama-lamanya. Satu penyelesaian yang berkesan untuk masalah ini ialah menetapkan tamat masa untuk panggilan fungsi.

Modul isyarat Python menyediakan fungsi yang diperlukan untuk mendaftar pengendali isyarat yang akan digunakan jika fungsi melebihi tamat masa yang ditentukan. Begini cara ia boleh dilaksanakan:

import signal

def handler(signum, frame):
    print("Timeout reached!")
    raise Exception("Function call timed out")

def function_to_timeout():
    print("Running function...")
    # Simulate a long-running task
    for i in range(10):
        time.sleep(1)

# Register the signal handler
signal.signal(signal.SIGALRM, handler)

# Set a timeout of 5 seconds
signal.alarm(5)

try:
    # Call the function
    function_to_timeout()
except Exception as exc:
    print(exc)

Apabila function_to_timeout() dipanggil, ia akan mencetak mesej yang menunjukkan bahawa ia sedang berjalan. Signal.alarm(5) menetapkan tamat masa 5 saat, selepas itu fungsi pengendali akan dicetuskan. Dalam pengendali, pengecualian dinaikkan untuk menamatkan panggilan fungsi.

Pendekatan ini membolehkan anda menetapkan tamat masa tertentu untuk fungsi dan keluar dari skrip dengan anggun sekiranya fungsi mengambil masa lebih lama daripada masa yang ditentukan.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Masa Tamat Fungsi 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