Dự án PyPy tuyệt vời nhằm mục đích. "dịch mô tả cấp Python của chính ngôn ngữ Python sang các ngôn ngữ cấp thấp hơn", có chương trình phụ trợ C. Đó là một trong những ngôn ngữ cấp thấp hơn mà nó nhằm mục đích dịch các chương trình sang là C
Trang Cython chính tại https. // con trăn. org/ tuyên bố chính xác rằng nó
chuyển đổi một ngôn ngữ giống như Python sang C/C++. Có thể đó là ý của bạn
nhưng bạn đã nói ngược lại. Và tài liệu của Cython
cũng bao gồm các hướng dẫn sử dụng nó trên Windows, vì vậy có lẽ không
chính xác khi khẳng định nó chỉ dành cho Linux [mặc dù tôi chỉ sử dụng nó trên Linux .
personally, so I can’t vouch for how well it works on Windows].
Nói “chỉ hoạt động với Python 2” cũng không chính xác. 7”
trong chừng mực bạn có thể sử dụng các bản phát hành chính thức hiện tại của nó để tạo C
tiện ích mở rộng cho các dự án dựa trên Python3, bạn chỉ cần sử dụng Cython
language_level 2 [a Python 2.x style syntax] for the code you want
chuyển sang C. Hơn nữa, Cython 3. x [bản alpha có sẵn cho
1. 5 năm và đang cải thiện] sử dụng cú pháp giống như Python3 với
language_level là 3.
Về việc Cython có được duy trì hay không, nó đã được
phát triển tích cực trong hơn một thập kỷ và được sử dụng rộng rãi bởi nhiều thư viện Python
phổ biến để tạo .
Tôi thực sự không chắc ý của bạn là gì khi nói “nhưng nó phân biệt chữ hoa chữ thường. ”
Không phải tất cả Python cũng phân biệt chữ hoa chữ thường sao?
Tuy nhiên, câu hỏi ban đầu là về việc chuyển đổi Python sang C#,
chứ không phải C/C++. Có một trình thông dịch Python được triển khai trong C# được gọi là
IronPython, không chính xác là trình chuyển đổi từ Python sang C# nhưng nó tuyên bố
bao gồm rất nhiều. NET, nếu đó là những gì bạn đang tìm kiếm.
//ironpython.net/
Hy vọng rằng sẽ giúp
Cython tạo các mô-đun C giúp tăng tốc độ thực thi mã Python, điều quan trọng đối với các ứng dụng phức tạp mà ngôn ngữ thông dịch không hiệu quả
Qua
Ngày 21 tháng 4 năm 2021 . 1 Nhận xét . %t phút đọc
Đăng ký hoặc Đăng nhập để thích
Hình ảnh của
Trò chuyện WOCinTech. Được sửa đổi bởi Opensource. com. CC BY-SA 4. 0
Cython là trình biên dịch cho ngôn ngữ lập trình Python nhằm tối ưu hóa hiệu suất và hình thành ngôn ngữ lập trình Cython mở rộng. Là một phần mở rộng của Python, Cython cũng là một siêu ngôn ngữ của ngôn ngữ Python và nó hỗ trợ gọi các hàm C và khai báo các kiểu C trên các biến và thuộc tính lớp. Điều này giúp dễ dàng bọc các thư viện C bên ngoài, nhúng C vào các ứng dụng hiện có hoặc viết các phần mở rộng C cho Python theo cú pháp dễ dàng như chính Python
Cython thường được sử dụng để tạo các mô-đun C giúp tăng tốc độ thực thi mã Python. Điều này rất quan trọng trong các ứng dụng phức tạp khi ngôn ngữ thông dịch không hiệu quả
Cài đặt Cython
Bạn có thể cài đặt Cython trên Linux, BSD, Windows hoặc macOS bằng Python
$ python -m pip install Cython
Thêm tài nguyên Python
- IDE là gì?
- bảng ăn gian. Trăn 3. 7 cho người mới bắt đầu
- Khung GUI Python hàng đầu
- Tải xuống. 7 thư viện PyPI thiết yếu
- Nhà phát triển mũ đỏ
- Nội dung Python mới nhất
Sau khi cài đặt, nó đã sẵn sàng để sử dụng
Chuyển đổi Python thành C
Một cách tốt để bắt đầu với Cython là với một ứng dụng "hello world" đơn giản. Đây không phải là minh chứng tốt nhất về các ưu điểm của Cython, nhưng nó cho thấy điều gì sẽ xảy ra khi bạn sử dụng Cython
Đầu tiên, tạo tập lệnh Python đơn giản này trong một tệp có tên là
print["hello world"]
4 [tiện ích mở rộng print["hello world"]
5 không phải là phép thuật và về mặt kỹ thuật, nó có thể là bất kỳ thứ gì, nhưng đó là tiện ích mở rộng mặc định của Cython]print["hello world"]
Tiếp theo, tạo tập lệnh thiết lập Python. Tệp
print["hello world"]
6 giống như phiên bản tạo tệp tạo tệp của Python và Cython có thể sử dụng tệp đó để xử lý mã Python của bạnfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
Cuối cùng, sử dụng Cython để chuyển đổi tập lệnh Python của bạn thành mã C
$ python setup.py build_ext --inplace
Bạn có thể xem kết quả trong thư mục dự án của mình. Mô-đun
print["hello world"]
7 của Cython chuyển đổi print["hello world"]
4 thành tệp print["hello world"]
9 và thư viện 0. Mã C dài 2.648 dòng, vì vậy nó nhiều văn bản hơn một dòng của nguồnfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
print["hello world"]
4. Thư viện 0 cũng lớn hơn 2.000 lần so với nguồn của nó [54.000 so với 20 byte]. Sau đó, một lần nữa, Python được yêu cầu để chạy một tập lệnh Python duy nhất, do đó, có rất nhiều mã hỗ trợ tệpfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
print["hello world"]
4 một dòng đóĐể sử dụng phiên bản mã C của tập lệnh Python "hello world", hãy mở lời nhắc Python và nhập mô-đun
4 mới mà bạn đã tạofrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
$ python -m pip install Cython
6Tích hợp mã C vào Python
Một bài kiểm tra chung tốt về sức mạnh tính toán là tính toán các số nguyên tố. Số nguyên tố là số dương lớn hơn 1 và chỉ khi chia cho 1 hoặc chính nó mới ra số nguyên dương. Về lý thuyết thì đơn giản, nhưng khi số lượng lớn hơn, yêu cầu tính toán cũng tăng lên. Trong Python thuần túy, nó có thể được thực hiện dưới 10 dòng mã
$ python -m pip install Cython
7Tập lệnh này sẽ im lặng khi thành công và trả về một thông báo nếu số không phải là số nguyên tố
$ python -m pip install Cython
8Chuyển đổi cái này thành Cython cần một chút công việc, một phần để làm cho mã phù hợp để sử dụng làm thư viện và một phần để thực hiện
Tập lệnh và thư viện
Nhiều người dùng học Python như một ngôn ngữ kịch bản. bạn cho Python biết các bước bạn muốn nó thực hiện và nó thực hiện công việc. Khi bạn tìm hiểu thêm về Python [và lập trình nguồn mở nói chung], bạn sẽ biết rằng phần lớn mã mạnh nhất hiện có trong các thư viện mà các ứng dụng khác có thể khai thác. Mã của bạn càng ít cụ thể thì càng có nhiều khả năng nó được lập trình viên [bao gồm cả bạn] sử dụng lại cho các ứng dụng khác. Việc tách tính toán ra khỏi quy trình làm việc có thể tốn nhiều công sức hơn một chút, nhưng cuối cùng, việc này thường đáng để nỗ lực
Trong trường hợp máy tính số nguyên tố đơn giản này, việc chuyển đổi nó sang Cython bắt đầu bằng một tập lệnh thiết lập
$ python -m pip install Cython
9Chuyển đổi tập lệnh của bạn thành C
$ python setup.py build_ext --inplace
Mọi thứ dường như đang hoạt động tốt cho đến nay, nhưng khi bạn cố gắng nhập và sử dụng mô-đun mới của mình, bạn sẽ gặp lỗi
print["hello world"]
1Vấn đề là tập lệnh Python dự kiến sẽ được chạy từ một thiết bị đầu cuối, trong đó các đối số [trong trường hợp này là một số nguyên để kiểm tra là số nguyên tố] là phổ biến. Thay vào đó, bạn cần sửa đổi tập lệnh của mình để tập lệnh có thể được sử dụng làm thư viện
Viết một thư viện
Thư viện không sử dụng đối số hệ thống và thay vào đó chấp nhận đối số từ mã khác. Thay vì sử dụng
5 để đưa đầu vào của người dùng, hãy biến mã của bạn thành một hàm chấp nhận đối số có tên làfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
6 [hoặcfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
7 hoặc bất kỳ tên biến nào bạn thích]from setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
print["hello world"]
0Phải thừa nhận rằng điều này làm cho tập lệnh của bạn hơi khó kiểm tra vì khi bạn chạy mã bằng Python, hàm
8 không bao giờ được thực thi. Tuy nhiên, các lập trình viên Python đã nghĩ ra một cách giải quyết chung, nếu không muốn nói là trực quan, cho vấn đề này. Khi trình thông dịch Python thực thi tập lệnh Python, có một biến đặc biệt tên làfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
9 được đặt thànhfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
$ python setup.py build_ext --inplace
0, nhưng khi nó được nhập dưới dạng mô-đun, thì 9 được đặt thành tên của mô-đun. Bằng cách tận dụng điều này, bạn có thể viết một thư viện vừa là mô-đun Python vừa là tập lệnh Python hợp lệfrom setuptools import setup
from Cython.Build import cythonize
setup[
ext_modules = cythonize["hello.pyx"]
]
print["hello world"]
1Bây giờ bạn có thể chạy mã dưới dạng lệnh
print["hello world"]
2Và bạn có thể chuyển đổi nó thành Cython để sử dụng làm mô-đun
print["hello world"]
3C con trăn
Chuyển đổi mã từ Python thuần sang C bằng Cython có thể hữu ích. Bài viết này trình bày cách thực hiện phần đó, nhưng có các tính năng của Cython giúp bạn tối ưu hóa mã của mình trước khi chuyển đổi, các tùy chọn phân tích mã của bạn để tìm thời điểm Cython tương tác với C, v.v. Nếu bạn đang sử dụng Python, nhưng bạn đang tìm cách nâng cao mã của mình bằng mã C hoặc hiểu thêm về cách các thư viện cung cấp khả năng mở rộng tốt hơn các tập lệnh hoặc nếu bạn chỉ tò mò về cách Python và C có thể hoạt động cùng nhau, thì hãy bắt đầu