2010-04-30 15 views
3

Ceci est absolument frustrant, mais je ne sais pas si ce qui suit est un problème uniquement sur ma machine ou IDLE en général.Python IDLE gèle

Lorsque vous tentez d'imprimer une longue liste dans la coquille, et qui pourrait se produire par accident pendant le débogage, les écrasements du programme et vous devez redémarrer manuellement.

Pire encore, si vous avez quelques fenêtres de l'éditeur ouvert, il génère toujours quelques sous-processus, et chacun d'entre eux doit être arrêter manuellement à partir du gestionnaire de tâches.

Y at-il un moyen d'éviter cela?

J'utilise Python 3, par la manière.

+2

Il y a quelqu'un qui utilise encore IDLE !? –

+1

Qu'est-ce qui ne va pas? – ooboo

+0

@ooboo: c'est affreux ... Pour la programmation interactive, essayez iPython (http://ipython.scipy.org/moin/) et pour les programmes plus conséquents, il y a plusieurs IDE décents autour de cette fente de kick IDLE d'ici à Tombouctou. –

Répondre

2

Il semble besoin tk d'écrire beaucoup de données dans le cadre de la coquille, cela prend beaucoup de temps et quand la liste est longue, alors il ne répond plus.

J'ai fait:

>>a = range(n) 
>>print(list(a)) 

Il était OK pour n = 100 n = 1000. Après que les choses ont commencé à être lent points. Pour n aussi bas que 10000, déplacer la page de haut en bas devient très, très lent.

Je soupçonne qu'il n'y a pas de solution. Pour de petites valeurs de n, cela aiderait probablement à ouvrir la fenêtre mais, malheureusement, n'a pas implémenté de méthode pour effacer le shell. Je ne comprends pas pourquoi car il ne devrait pas être difficile ...

Modifier 2012: Au cours des derniers mois de comportement IDLE et fonctionnalité a de nombreuses améliorations importantes grâce à la collecte des extensions et des plug-ins fournis par IdleX.
L'impression accidentelle de grandes quantités de données n'est plus un problème. Lorsque IdleX détecte une telle situation, il affiche un avertissement indiquant l'existence des données au lieu de l'imprimer. Un clic droit sur l'avertissement produit un aperçu des données, pas dans le shell inactif mais dans l'éditeur de texte du système (bloc-notes dans Windows). De cette façon, la coque ne devient pas encombré de données et ne ralentit pas.

enter image description here

+0

Les correctifs sont les bienvenus, j'en suis sûr. Je suppose que c'est loin d'être aussi facile que vous le pensez car IDLE lui-même est écrit en Python et exécute la plupart de ces choses dans le processus principal. –

+2

@ Thomas: Je me demandais juste, avec une petite idée sur les internes inactifs, vous le savez: l'ignorance est en gras. Bien sûr, étant facile, ça aurait été réglé avant. Pourtant, pour l'utilisateur commun et le débutant (de nombreux livres python vous amènent à commencer à apprendre avec le mode inactif), il est étouffant que l'éditeur de shell 'officiel' livré avec python présente certains de ces problèmes et limitations. – joaquin

2

Les Squeezer adresses d'extension ce problème. Au lieu d'afficher le texte long (qui est la source du ralentissement), Squeezer capture la sortie et affiche un bouton à la place. Vous avez la possibilité d'étendre le contenu ou de l'afficher dans le Bloc-notes.

Squeezer est inclus dans IdleX, que vous trouverez peut-être utile.

+0

Intéressant en effet! Merci! –