Je veux mettre fin au pool multiprocesseur de python avec ctrl + c (KeyboardInterrupt)

problème

Si vous écrivez normalement le pool multitraitement de python et ctrl + c pendant l'exécution, le processus ne se terminera pas et restera bloqué.

pool.py


import time
from multiprocessing import Pool

def worker(arg):
    print("process {}".format(arg))
    time.sleep(2)

if __name__ == '__main__':
    p = Pool(2)
    p.map(worker, range(6))
    p.close()

(Si vous Ctrl + C lors de l'exécution de la source ci-dessus)

(Abréviation)
KeyboardInterrupt

(Il s'arrêtera dans cet état)

Même si je spécifie l'ID de processus et que je le tue, python ressuscite comme un zombie. Je veux le finir proprement avec Ctrl + C en quelque sorte.

Cause

Quelqu'un avait exactement le même problème avec StackOverflow. https://stackoverflow.com/questions/1408356/keyboard-interrupts-with-pythons-multiprocessing-pool

Il semble que l'entrée de KeyboardInterrupt n'est pas transmise au processus appelé dans le pool, et la fonction d'attente continue d'attendre indéfiniment.

Solution

Ce n'est pas grave si vous définissez un délai.

p.map(worker, range(6))

À

p.map_async(worker, range(6)).get(9999999)

Remplacer par.

Recommended Posts

Je veux mettre fin au pool multiprocesseur de python avec ctrl + c (KeyboardInterrupt)
Je souhaite supprimer l'avertissement d'importation non résolue de Python avec vsCode
Je veux faire ○○ avec les Pandas
Je veux déboguer avec Python
Je veux détecter des objets avec OpenCV
Je veux écrire un blog avec Jupyter Notebook
Je veux installer Python avec PythonAnywhere
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Je veux utiliser MATLAB feval avec python
Je veux moquer datetime.datetime.now () même avec pytest!
Je souhaite afficher plusieurs images avec matplotlib.
Je veux frapper 100 sciences des données avec Colaboratory
Je veux faire un jeu avec Python
Je veux être OREMO avec setParam!
Je souhaite utiliser le répertoire temporaire avec Python2
Je ne veux pas utiliser -inf avec np.log
#Unresolved Je veux compiler gobject-introspection avec Python3
Je souhaite utiliser ip vrf avec SONiC
Je veux résoudre APG4b avec Python (chapitre 2)
Je veux recommencer avec Migrate de Django
Je veux créer du code C ++ à partir de code Python!
Je veux écrire dans un fichier avec Python
Je veux convertir une image en WebP avec sucette
Je souhaite détecter une connexion non autorisée à Facebook avec Jubatus (1)
Je veux faire la transition avec un bouton sur le ballon
Je veux gérer l'optimisation avec python et cplex
Je veux escalader une montagne avec l'apprentissage par renforcement
Je veux hériter de l'arrière avec la classe de données python
Je veux travailler avec un robot en python.
Je veux diviser une chaîne de caractères avec hiragana
Je veux AWS Lambda avec Python sur Mac!
Je souhaite créer manuellement une légende avec matplotlib
[TensorFlow] Je souhaite traiter des fenêtres avec Ragged Tensor
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux lier une variable locale avec lambda
Je veux pouvoir analyser des données avec Python (partie 3)
Je souhaite utiliser facilement les fonctions R avec le notebook ipython
Je souhaite spécifier une autre version de Python avec pyvenv
Je veux pouvoir analyser des données avec Python (partie 1)
Je veux créer un éditeur de blog avec l'administrateur de django
Je veux démarrer un environnement Jupyter avec une seule commande
[NetworkX] Je souhaite rechercher des nœuds avec des attributs spécifiques
Je veux faire une macro de clic avec pyautogui (désir)
Je veux changer le drapeau japonais en drapeau des Palaos avec Numpy
Je veux pouvoir analyser des données avec Python (partie 4)
Je veux colorier des photos en noir et blanc de souvenirs avec GAN
Je veux pouvoir analyser des données avec Python (partie 2)
Je veux assister automatiquement à des cours en ligne avec Python + Selenium!
Je veux faire une macro de clic avec pyautogui (Outlook)
[Python] Je souhaite utiliser l'option -h avec argparse
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
Je veux installer le package de requirements.txt avec poésie
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Je veux résoudre SUDOKU
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove