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

Barbara Streisand
Lepaskan: 2024-10-22 15:44:18
asal
452 orang telah melayarinya

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

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!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!