2014-09-20 14 views
5

Tôi đã được thông báo rằng bạn có thể sử dụng PyPy để chạy các chương trình Python, nhanh hơn rất nhiều khi nó được biên dịch bằng trình biên dịch JIT hơn là giải thích.Sử dụng PyPy để chạy chương trình Python?

Chương trình sau tìm thừa số nguyên tố lớn nhất trong số 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) 

Điều gì sẽ là các thủ tục để chạy này bằng PyPy?

Tôi biết có tài liệu về số site của họ, nhưng tôi không hiểu và sẽ đánh giá cao trình diễn.

+1

Nó không được biên dịch trong 'C'. Nó không liên quan gì đến 'C' trên thực tế. Nó chạy dưới một JIT. – simonzack

+0

Cảm ơn bạn, đã cập nhật câu hỏi của tôi! – Jonny

+0

Lưu ý rằng việc sử dụng 'math.sqrt' sẽ tăng tốc 10x ngay lập tức dưới PyPy. – Veedrac

Trả lời

7

Thêm dòng công việc này để phía trên cùng của chương trình:

#!/usr/bin/env pypy 

Nếu bạn muốn làm điều này bằng tay, chỉ cần nhập pypy main.py trên dòng lệnh.

+0

Cảm ơn bạn. Vì vậy, không có thay đổi trong chương trình chính nó cần thiết, bạn chỉ cần sử dụng một chương trình khác để chạy các tập tin. Bạn có biết tốc độ của PyPy (trình biên dịch JIT) so với các ngôn ngữ được biên dịch như C và FORTRAN không? – Jonny

+0

Họ có [điểm chuẩn tốc độ trực tiếp] (http://speed.pypy.org/), nó phụ thuộc vào mã, nhưng theo ước tính sơ bộ tôi sẽ nói chậm hơn 2-10 lần. – simonzack

+0

Tuyệt vời. Ngoài ra: khi tôi cố gắng chạy một chương trình từ thiết bị đầu cuối bằng cách sử dụng 'pypy test.py' nó mang lại cho tôi một lỗi, nhưng khi tôi thêm dòng bạn đề xuất vào đầu chương trình và chạy 'python test.py', nó công việc. Điều này có bình thường không? Hoặc một vấn đề với việc cài đặt PyPy? – Jonny

Các vấn đề liên quan