316 votes

Est-il possible de détacher matplotlib parcelles afin que le calcul puisse continuer ?

Après ces instructions dans le Python interprète on obtient une fenêtre avec une intrigue :

Malheureusement, je ne sais pas comment faire pour continuer à explorer interactivement le personnage créé par `` alors que les programme fait plus de calculs.

Il est possible à tous ? Parfois, les calculs sont longues et cela aiderait si elles passeraient au cours de l’examen des résultats intermédiaires.

264voto

nosklo Points 75862

Utilisation `` d’appels qui ne bloquent pas :

À l’aide de `` :

Mode interactif :

167voto

Jan Points 1647

Utilisez le mot-clé « en bloc » pour substituer le comportement de blocage, par exemple

pour continuer votre code.

34voto

nosklo Points 75862

Il est préférable de toujours vérifier auprès de la bibliothèque que vous utilisez si elle prend en charge l'utilisation dans un non-bloquant .

Mais si vous voulez une solution générique, ou si il n'y a pas d'autre moyen, vous pouvez exécuter tout ce qui bloque dans un processus séparés à l'aide de la multprocessing module inclus dans python. Le calcul de continuer:

from multiprocessing import Process
from matplotlib.pyplot import plot, show

def plot_graph(*args):
    for data in args:
        plot(data)
    show()

p = Process(target=plot_graph, args=([1, 2, 3],))
p.start()

print 'yay'
print 'computation continues...'
print 'that rocks.'

print 'Now lets wait for the graph be closed to continue...:'
p.join()

Qui a la surcharge de lancer un nouveau processus, et il est parfois plus difficile à déboguer sur des scénarios complexes, donc je préfère l'autre solution (à l'aide d' matplotlib's non bloquantes appels d'API)

27voto

Nico Points 893

Essayez

Le `` documents déclare la `` option expérimentale, mais bien sûr, ça marche pour moi.

10voto

nosklo Points 75862

Vous pouvez lire ce document en `` de documentation, intitulée :

À l’aide de matplotlib dans un shell python

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X