2010-10-20 3 views
6

J'ai une simple bibliothèque écrite en C++ dans laquelle je crée un wrapper Python pour utiliser boost.python. Certaines fonctions mettent beaucoup de temps à s'exécuter (plus de 30 secondes), et je voudrais les rendre interruptibles de sorte que lorsque je clique sur ctrl-d pour déclencher KeyboardInterrupt dans l'interpréteur python, je suis en mesure de répondre à cela en C++.Comment passer/attraper/répondre à KeyboardInterrupt de Python en C++?

Existe-t-il un moyen de le faire? Je n'ai trouvé aucune information sur les interruptions et boost.python sur boost.org ou python.org.

+0

Si vous avez un exemple de travail minimal, il serait très utile de l'inclure. Merci. –

+0

J'ai trouvé un exemple [ici] (http://mail.python.org/pipermail/cplusplus-sig/2010-February/015209.html), mais c'est compliqué. Comme il arrive, il utilise PyErr_CheckSignals(). –

+0

La réponse ci-dessous, en utilisant PyErr_CheckSignals() fonctionne bien. Merci. –

Répondre

4

Appelez PyErr_CheckSignals() de temps en temps.

+5

Un exemple de travail complet minimal serait très utile ici. –