Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menghalang Menghentikan Fungsi Python Selama-lamanya dengan Tamat Masa?

Bagaimanakah Saya Boleh Menghalang Menghentikan Fungsi Python Selama-lamanya dengan Tamat Masa?

DDD
DDDasal
2024-12-24 00:55:09956semak imbas

How Can I Prevent Indefinitely Halting Python Functions with a Timeout?

Tamamasa pada Panggilan Fungsi

Apabila menggunakan fungsi dalam Python yang boleh menghentikan pelaksanaan skrip selama-lamanya, ia menjadi perlu untuk mewujudkan mekanisme untuk mencegahnya. Penyelesaiannya terletak pada menetapkan ambang tamat masa selepas itu skrip akan campur tangan dan menamatkan fungsi.

Menggunakan Pakej Isyarat

Untuk sistem berasaskan UNIX, pakej isyarat menawarkan penyelesaian yang mantap. Untuk menggunakannya:

  1. Import pakej isyarat: isyarat import
  2. Tentukan fungsi pengendali yang akan digunakan semasa tamat masa. Fungsi ini harus menimbulkan pengecualian untuk menamatkan proses.
  3. Gunakan fungsi signal.alarm() untuk menentukan tempoh tamat masa.
  4. Tetapkan pengendali isyarat SIGALRM menggunakan signal.signal(signal.SIGALRM , pengendali).
  5. Panggil fungsi yang berpotensi terhenti dalam blok percubaan. Sekiranya tamat masa, pengecualian pengendali akan dinaikkan.
  6. Jika mahu, batalkan pemasa menggunakan signal.alarm(0) setelah fungsi selesai dalam masa yang diperuntukkan.

Berikut ialah contoh ilustrasi:

import signal

# Handler function
def handler(signum, frame):
    print("Timeout reached!")
    raise Exception("Timeout exception")

# Function that may stall indefinitely
def loop_forever():
    while True:
        print("Looping")
        # Pause execution for 1 second
        time.sleep(1)

# Set timeout to 5 seconds
signal.alarm(5)
signal.signal(signal.SIGALRM, handler)

try:
    loop_forever()
except Exception as exc:
    print("Exception:", exc)

Jika fungsi loop_forever() gagal diselesaikan dalam masa 5 saat, fungsi pengendali akan digunakan, meningkatkan pengecualian tamat masa dan menamatkan proses.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Menghentikan Fungsi Python Selama-lamanya dengan Tamat Masa?. 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