Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Gangguan Papan Kekunci dengan Anggun dalam Kolam Pemprosesan Python?

Bagaimana Mengendalikan Gangguan Papan Kekunci dengan Anggun dalam Kolam Pemprosesan Python?

Barbara Streisand
Barbara Streisandasal
2024-10-22 15:44:18453semak imbas

How to Gracefully Handle Keyboard Interrupts in Python Multiprocessing Pools?

Pengendalian Gantungan Papan Kekunci yang Anggun dalam Kolam Pemprosesan Berbilang Python

Apabila bekerja dengan Kolam berbilang pemprosesan Python, pengendalian acara KeyboardInterrupt tidak selalunya mudah. Dalam artikel ini, kami akan meneroka cara mengendalikan gangguan tersebut dan memastikan proses keluar dengan baik.

Sampel kod yang disediakan menunjukkan cabaran. Walaupun mempunyai blok tangkapan untuk KeyboardInterrupt, ia tidak dilaksanakan apabila kawalan-C ditekan. Sebaliknya, atur cara digantung sehingga ia ditamatkan secara luaran.

Punca isu ini terletak pada pepijat Python yang berkaitan dengan menyekat pada syarat dalam threading.Condition.wait(). Dalam konteks ini, KeyboardInterrupt tidak pernah dihantar. Akibatnya, ia menghalang gangguan daripada dikendalikan dalam Pool.

Satu penyelesaian kepada masalah ini ialah dengan menentukan tamat masa semasa menunggu keputusan. Kaedah map_async() dengan parameter tamat masa boleh digunakan dan bukannya map(). Pendekatan ini membolehkan KeyboardInterrupt dikenali dan diproses:

<code class="python">results = pool.map_async(slowly_square, range(40)).get(9999999)</code>

Dengan menetapkan nilai tamat masa yang besar, pada asasnya kami memberitahu Pool untuk terus menunggu keputusan sehingga diganggu oleh pengguna.

Adalah penting untuk ambil perhatian bahawa terdapat beberapa batasan untuk penyelesaian ini. Jika tamat masa tamat sebelum semua tugasan selesai, keputusan yang tidak lengkap akan dibuang. Oleh itu, adalah penting untuk memilih nilai tamat masa yang sesuai yang mengimbangi responsif dengan risiko hasil yang tidak lengkap.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Gangguan Papan Kekunci dengan Anggun dalam Kolam Pemprosesan 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