2008-09-17 35 views
9

Tôi tương đối mới đối với Python và tôi luôn sử dụng triển khai cpython (v2.5) chuẩn.Ưu và nhược điểm của việc triển khai Python khác nhau là gì?

Tôi đã tự hỏi về các triển khai khác mặc dù, đặc biệt là Jython và IronPython. Điều gì làm cho chúng tốt hơn? Điều gì làm cho họ tồi tệ hơn? Những triển khai khác là gì?

Tôi đoán những gì tôi đang tìm là bản tóm tắt và danh sách các ưu và nhược điểm cho từng triển khai.

Trả lời

1

Ưu điểm: Truy cập vào các thư viện có sẵn cho JVM hoặc CLR.

Nhược điểm: Cả tụt hậu tự nhiên sau CPython về tính năng.

15

JythonIronPython rất hữu ích nếu bạn có một nhu cầu quan trọng hơn để giao tiếp với các thư viện hiện bằng văn bản trong một nền tảng khác nhau, giống như nếu bạn có 100.000 dòng Java và bạn chỉ muốn viết 20 dòng Python script . Không đặc biệt hữu ích cho bất cứ điều gì khác, theo ý kiến ​​của tôi, bởi vì họ là vĩnh viễn một vài phiên bản đằng sau CPython do quán tính cộng đồng.

Stackless là điều thú vị vì nó có hỗ trợ cho chủ đề màu xanh lá cây, tiếp tục, vv. Sắp xếp một Erlang-lite.

PyPy là trình thông dịch/trình biên dịch thử nghiệm, một ngày nào đó có thể thay thế CPython, nhưng hiện tại là nhiều thử nghiệm cho các ý tưởng mới.

+1

Một số phép thuật cho Stackless (chủ đề màu xanh lá cây, vv) có sẵn để thực hiện CPython trong thư viện py.magic, được phát triển bởi PyPy. Theo như tôi biết, phát triển không có ngăn xếp được phần nào yên tĩnh, hầu hết công việc cho các tính năng Erlang-lite bây giờ sẽ đi vào PyPy. – Ryan

3

Tất cả những hiện thực được liệt kê ở đây:

https://wiki.python.org/moin/PythonImplementations

CPython là "thực hiện tham chiếu" và phát triển bởi Guido và các nhà phát triển cốt lõi.

+1

Liên kết này cung cấp cho 404 ngày nay (2012 tháng 8). – FooF

1

IronPython và Jython sử dụng môi trường thời gian chạy cho .NET hoặc Java và đi kèm với tính năng Soạn thảo trong thời gian và bộ thu gom rác khác với CPython gốc. Họ có thể cũng nhanh hơn CPython nhờ vào JIT, nhưng tôi không biết điều đó chắc chắn.

Một nhược điểm trong việc sử dụng Jython hoặc IronPython là bạn không thể sử dụng các mô-đun C gốc, chúng chỉ có thể được sử dụng trong CPython.

1

PyPy là triển khai Python được viết bằng RPython, là một tập hợp con Python.

RPython có thể được dịch để chạy trên máy ảo hoặc, không giống như Python chuẩn, RPython có thể được biên dịch tĩnh.

6

Một lợi ích bổ sung cho Jython, ít nhất là đối với một số, là it lacks the GIL (Khóa thông dịch toàn cục) và sử dụng các chuỗi gốc của Java. Điều này có nghĩa là bạn có thể chạy mã Python thuần túy song song, một thứ không thể thực hiện với GIL.

+0

Tương tự với IronPython! –

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