script python de velocidade na linha de comando versus lançado no shell IDLE

script python de velocidade na linha de comando versus lançado no shell IDLE

Notei várias vezes que um script python simples (com alguns cálculos algébricos diretos em um loop) é executado consideravelmente mais rápido (até um fator 6) quando iniciado em uma linha de comando do shell, em comparação com uma execução por meio do shell do IDLE. Não há nada sofisticado acontecendo no roteiro. Imprimo apenas uma variável de loop para acompanhar visualmente o progresso no loop.

Certamente apenas esta declaração de impressão não pode ser o motivo da perda de velocidade no IDLE, ou pode?

Alguém pode me explicar por que isso acontece?

Responder1

Sim, a instrução print é realmente a principal causa da lentidão no modo inativo. Os fluxos stdout e stderr são capturados pelo IDLE e vários comandos Tk são executados para renderizar o texto adequadamente. Remover sua saída para stdout deve acelerar as coisas novamente.

Veja oociosolib.PyShell,ociosolib.OutputWindow, eidlelib.EditorWindowmódulos para (alguns) da extensão da toca do coelho...

Eu sugeriria usar oexploração madeireiramódulo para registrar o progresso; você pode então definir o nível de log para algo mais alto ao executar em IDLE para evitar a saída nessa condição ou registrar em algum lugar diferente de stdout.

embora eurealmentenão recomendaria, algo como o seguinte provavelmente funcionamaioriana maior parte do tempo se você realmente deseja configurar o comportamento de maneira diferente ao executar em IDLE. Embora você realmente não devesse :-)

import sys

running_under_idle = 'idlelib' in sys.modules

informação relacionada