Traçage non bloquant avec Matplotlib
Dans Matplotlib, un blocage d'exécution se produit souvent lors du traçage de fonctions. Cela peut gêner les applications interactives qui nécessitent des mises à jour en temps réel. Pour résoudre ce problème, il est essentiel de comprendre comment les backends affectent le comportement de blocage et d'exploiter les techniques appropriées pour le traçage non bloquant.
Impact des backends sur l'exécution du blocage
Matplotlib utilise une variété de backends pour le rendu GUI. Alors que certains backends, tels que Qt4Agg, prennent en charge le traçage non bloquant, d'autres ne le font pas. Cela signifie que l'utilisation de show(block=False) peut entraîner le gel des fenêtres ou un comportement incorrect en fonction du backend sélectionné.
Examen du code
En examinant le code fourni, le l'utilisation de show(block=False) semble en effet être le coupable du problème de fenêtre gelée. En effet, le backend de Qt4Agg ne prend pas en charge le mode de blocage pour les applications non graphiques.
Technique de traçage non bloquant
Pour obtenir un traçage non bloquant dans Qt4Agg, il est recommandé pour utiliser l'approche suivante :
Voici une version mise à jour de votre code qui implémente cette technique non bloquante :
<code class="python">import numpy as np from matplotlib import pyplot as plt def main(): plt.axis([-50,50,0,10000]) plt.ion() plt.show() x = np.arange(-50, 51) for pow in range(1,5): # plot x^1, x^2, ..., x^4 y = [Xi**pow for Xi in x] plt.plot(x, y) plt.draw() plt.pause(0.001) # Adjust this delay based on desired update frequency input("Press [enter] to continue.") if __name__ == '__main__': main()</code>
En implémentant ces modifications , le code permettra un traçage non bloquant sans créer de nouvelles fenêtres à chaque mise à jour.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!