Menghadkan Masa Pelaksanaan Panggilan Fungsi: Penyelaman Lebih Dalam
Apabila berurusan dengan penyekatan panggilan fungsi berkaitan soket untuk tempoh yang berpanjangan, kebimbangan umum timbul: bagaimana untuk mengehadkan masa pelaksanaan mereka. Memandangkan fungsi ini selalunya diperoleh daripada modul luaran, mengawal tingkah lakunya secara langsung mungkin menimbulkan cabaran.
Untuk menangani isu ini, penyelesaian menggunakan urutan berasingan adalah dinasihatkan. Memperkenalkan urutan tambahan membolehkan anda menentukan had tamat masa dan menamatkan fungsi jika melebihi had.
Menggunakan Modul 'isyarat' untuk Had Pelaksanaan Berasaskan Benang
Modul 'isyarat' dalam Python menyediakan pendekatan yang berkesan untuk melaksanakan had masa pelaksanaan. Ia membolehkan anda menghantar isyarat kepada rangkaian, termasuk isyarat penamatan apabila had masa dicapai.
Berikut ialah contoh yang menunjukkan cara menggunakan modul 'isyarat':
import signal import threading # Define our target function that may potentially block def long_function_call(): while True: # Some operations that may consume a lot of time pass # Define a function to handle the timeout signal def signal_handler(signum, frame): raise TimeoutException("Timed out!") # Create a thread that will execute the function thread = threading.Thread(target=long_function_call) # Register the signal handler to the thread signal.signal(signal.SIGALRM, signal_handler) # Set a timeout limit (in seconds) signal.alarm(10) # Start the thread thread.start() # Wait for the thread to complete or time out thread.join() # Handle the timeout exception, if any if thread.is_alive(): print("Timed out!")
Pendekatan ini menggunakan benang yang berasingan, memastikan bahawa benang utama tidak disekat semasa pelaksanaan fungsi sasaran. Modul 'isyarat' menyediakan mekanisme untuk menamatkan fungsi apabila had masa yang ditentukan berlalu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengehadkan Masa Pelaksanaan Menyekat Panggilan Fungsi Soket dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!