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

0

Eu notei várias vezes que um simples script python (com alguma computação algébrica direta em um loop) é executado consideravelmente mais rápido (até um fator 6) quando lançado em uma linha de comando do shell, em comparação com uma execução via shell do IDLE. Não há nada extravagante acontecendo no roteiro. Eu apenas imprimo 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 em IDLE, ou pode?

Alguém pode me explicar por que isso acontece?

    
por Mathias Vanwolleghem 25.02.2013 / 12:04

1 resposta

0

Sim, a instrução de impressão é a principal causa de lentidão no modo ocioso. Os fluxos stdout e stderr são capturados pelo IDLE, e um monte de comandos Tk são executados para renderizar o texto apropriadamente. Remover sua saída para stdout deve acelerar as coisas novamente.

Veja o idlelib.PyShell , idlelib.OutputWindow e idlelib.EditorWindow para (algumas) a extensão da toca do coelho ...

Eu sugeriria usar o módulo registro para registrar o progresso; você pode então definir o nível de log para algo maior quando estiver em IDLE para evitar a saída nessa condição, ou logar em algum lugar diferente de stdout.

Embora eu realmente não recomende, algo como o seguinte provavelmente funciona mais do tempo, se você realmente quiser ser capaz de configurar o comportamento de maneira diferente quando executado sob IDLE. Embora você realmente não devesse: -)

import sys

running_under_idle = 'idlelib' in sys.modules
    
por 10.04.2013 / 00:32