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

Bagaimana Mengendalikan Masa Tamat Fungsi dalam Python?

Susan Sarandon
Lepaskan: 2024-12-24 10:13:45
asal
295 orang telah melayarinya

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

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!

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