Comment déboguer un programme à l'aide du module multitraitement de Python sur VSCode
Exception escaped from start_client
failed to launch debugger for child process
AssertionError: can only join a child process
RuntimeError: already started
Le débogage d'un programme à l'aide du module multitraitement nécessite les trois points suivants:
Si \ _ \ _ nom \ _ \ _ == "\ _ \ _ main \ _ \ _": est requis pour que le fichier (module de niveau supérieur) démarre le débogage. Si vous ne voyez pas cette instruction, ajoutez-la pour formater votre code. Cela peut être une tâche ardue dans certains cas, mais elle est essentielle.
Par exemple, écrire ce qui suit directement sous l'instruction principale fonctionnera.
Exemple de description
if __name__ == "__main__":
import multiprocessing
multiprocessing.set_start_method('spawn', True)
Pour Windows, plus
freeze_support()
Il peut être nécessaire d'ajouter une ligne
Appuyez sur Ctrl + Maj + D pour entrer en mode débogage et modifier le fichier de configuration launch.json.
Ajoutez une section appelée "subProcess": true ici.
Exemple de configuration
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"subProcess": true, //Postscript
"console": "integratedTerminal"
}
]
}
VSCode peut ouvrir et exécuter le fichier notebook jupyter (.ipynb). Cependant, il n'est toujours pas possible de déboguer le code ouvert. Si vous souhaitez déboguer un programme multi-processus, utilisez VSCode pour le convertir en script python, puis appliquez la méthode ci-dessus.
OS: Debian 10 python: 3.7.4 Visual Studio Code: 1.44.0
Recommended Posts