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

Patricia Arquette
Lepaskan: 2024-10-22 14:33:02
asal
133 orang telah melayarinya

How to Gracefully Handle Keyboard Interrupts in Python's Multiprocessing Pools?

Mengendalikan Gangguan Papan Kekunci dalam Kolam Berbilang Pemprosesan Python

Apabila cuba menguruskan peristiwa KeyboardInterrupt dalam Kolam berbilang pemprosesan Python, pengguna sering menghadapi masalah dengan proses tergantung dan memerlukan penamatan luaran. Artikel ini bertujuan untuk menangani masalah ini dan menyediakan penyelesaian yang boleh dilaksanakan.

Untuk menghuraikan cabaran yang diperkenalkan dalam soalan, kod yang disediakan berhasrat untuk menamatkan semua proses dalam Pool dengan anggun apabila menerima isyarat KeyboardInterrupt (dengan menekan ^ C). Walau bagaimanapun, seperti yang diperhatikan, KeyboardInterrupt mencetuskan jeda dalam pelaksanaan, menghalang prosedur penamatan yang dimaksudkan daripada berkuat kuasa.

Ini dikaitkan dengan pepijat Python yang menghalang penghantaran isyarat KeyboardInterrupt kepada threading.Condition.wait( ) syarat. Isu ini timbul kerana wait() tidak kembali melainkan tamat masa ditentukan. Akibatnya, Gangguan Papan Kekunci tidak diterima semasa proses ini.

Untuk mengatasi cabaran ini, penyelesaian yang dicadangkan melibatkan pengenalan had masa kepada keadaan tunggu():

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

Dengan memasukkan tamat masa ini, keadaan wait() terpaksa bertindak balas kepada isyarat KeyboardInterrupt dengan segera, membenarkan penamatan yang anggun bagi semua proses dalam Pool.

Oleh itu, pengubahsuaian ini menyediakan pendekatan yang mantap untuk menguruskan KeyboardInterrupts dalam Pool berbilang pemprosesan Python, membolehkan pengguna untuk menghentikan semua proses secara terkawal dengan berkesan pada bila-bila masa.

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