2014-09-20 12 views
5

Mi è stato detto che è possibile utilizzare PyPy per eseguire programmi Python, che è molto più veloce in quanto viene compilato utilizzando un compilatore JIT piuttosto che interpretato.Utilizzo di PyPy per eseguire un programma Python?

Il seguente programma trova il più grande fattore primo del numero 600.851.475.143:

import numpy as np 

nr = 600851475143 
n = 2 

while n <= np.sqrt(nr): 
    if nr%n == 0: 
     nr = nr/n 
    n += 1 
print(nr) 

Quale sarebbe la procedura per eseguire questo utilizzando PyPy?

So che c'è documentazione sul loro site, ma non lo capisco e apprezzerei una dimostrazione.

+1

Non è compilato in 'C'. In realtà non ha nulla a che vedere con 'C'. Funziona sotto una JIT. – simonzack

+0

Grazie, ho aggiornato la mia domanda! – Jonny

+0

Si noti che l'uso di 'math.sqrt' dà un'immediata accelerazione 10 volte sotto PyPy. – Veedrac

risposta

7

Aggiungi questa linea shebang alla parte superiore del programma:

#!/usr/bin/env pypy 

Se si vuole fare questa operazione manualmente, basta inserire pypy main.py sulla riga di comando.

+0

Grazie. Quindi non c'è alcun cambiamento nel programma stesso necessario, basta usare un altro programma per eseguire il file. Sai come la velocità di PyPy (compilatore JIT) è paragonabile a linguaggi compilati come C e FORTRAN? – Jonny

+0

Hanno un [benchmark live speed] (http://speed.pypy.org/), dipende dal codice, ma come stima approssimativa direi 2-10 volte più lento. – simonzack

+0

Grande. Inoltre: quando provo ad eseguire un programma dal terminale usando 'pypy test.py' mi dà un errore, ma quando aggiungo la linea che hai suggerito all'inizio del programma ed esegui 'python test.py', lo fa lavoro. È normale? O un problema con l'installazione di PyPy? – Jonny

Problemi correlati