Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengehadkan Masa Pelaksanaan Panggilan Fungsi Penyekatan dalam Python?
Menghadkan Masa Pelaksanaan Panggilan Fungsi
Anda telah menemui panggilan fungsi berkaitan soket dalam kod anda yang menunjukkan sekatan dilanjutkan sekali-sekala, mencecah jam pada masa-masa tertentu. Ini menimbulkan keadaan yang tidak boleh diterima. Untuk mengurangkan isu ini, anda mencari penyelesaian dalam kod anda untuk mengehadkan masa pelaksanaan fungsi.
Seperti yang dicadangkan dalam jawapan yang diterima, menggunakan urutan lain mungkin memberikan penyelesaian. Walau bagaimanapun, pendekatan yang dipertingkatkan ialah menggunakan pernyataan with, menawarkan kemudahan sintaksis untuk fungsi tamat masa:
import signal from contextlib import contextmanager class TimeoutException(Exception): pass @contextmanager def time_limit(seconds): def signal_handler(signum, frame): raise TimeoutException("Timed out!") signal.signal(signal.SIGALRM, signal_handler) signal.alarm(seconds) try: yield finally: signal.alarm(0) try: with time_limit(10): long_function_call() except TimeoutException as e: print("Timed out!")
Pendekatan ini membolehkan anda mengendalikan tamat masa dengan lebih elegan dalam satu blok, menaikkan TimeoutException jika fungsi melebihi had masa yang ditetapkan.
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Masa Pelaksanaan Panggilan Fungsi Penyekatan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!