Mộ yếu tố vô cùng quan trọng trong dự án, đó là cần phải bảo vệ source code và ngăn chặn việc sao chép source code. Sau quá trình tìm hiểu, chúng tôi đã thấy rằng việc sử dụng Cython là một phương pháp khá hiệu quả. Không chỉ giúp bảo vệ source code Python, mà còn tăng hiệu suất xử lý bằng cách biên dịch nó thành một thư viện C và tải nó vào hệ điều hành.
Trong bài viết này, chúng tôi sẽ hướng dẫn các bạn tạo một chương trình Cython đơn giản.
Cython là gì?
Cython là một ngôn ngữ lập trình được phát triển với mục tiêu trở thành một siêu ngôn ngữ (superset) của Python. Nó được thiết kế để cung cấp hiệu năng tương tự như ngôn ngữ lập trình C, trong khi vẫn cho phép viết mã chủ yếu bằng Python và sử dụng cú pháp lấy cảm hứng từ C để tối ưu hóa mã.
- Phát triển bởi Robert Bradshaw, Stefan Behnel, et al.
- Phát hành lần đầu vào 28/07/2007
- Repository: github.com/cython/cython
- Viết bằng Python, C
- Loại: Programming language
- License: Apache License 2.0
- Website: cython.org
Sử dụng Cython để bảo vệ và compile Source Code Python
Cài đặt Cython Module
Để cài đặt Cython Module, chúng ta sử dụng trình quản lý module của Python là PIP cho Python 2 hoặc PIP3 cho Python 3
pip install cython
Tạo project Cython
Một chương trình Cython tối thiểu có 3 files:
- Python source code: là các file chứa mã nguồn của Python sẽ được compile thành 1 Cython Extension
- 1 file setup.py sử dụng module setuptools của Python để tạo Cython Extension
- 1 file main để import Cython Extension
Một ví dụ về chương trình mà mình sẽ tạo ra có tên là VinaSupportModule có 3 files như sau:
+ File: my-module.py chứa mã nguồn của chương trình Python:
def hello_world(): print('We are vinasupport.com Team')
+ File: setup.py
from distutils.core import Extension, setup from Cython.Build import cythonize # define an extension that will be cythonized and compiled ext = Extension(name="VinaSupportModule", sources=["my-module.py"]) setup(ext_modules=cythonize(ext))
+ File: main.py
import VinaSupportModule VinaSupportModule.hello_world()
Compile Extension
Sử dụng command sau để compile source Python thành 1 extension
python setup.py build_ext --inplace
Sau khi build chúng ta có 1 extension có tên là: VinaSupportModule.cpython-35m-x86_64-linux-gnu.so
Giờ copy nó vào thư viện của hệ điều hành (Trên máy mình là Ubuntu 18.04)
sudo cp VinaSupportModule.cpython-35m-x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/
Test Extension
Như đã đề cập trước đó, chúng ta sẽ nhập module vào trong tệp nguồn main.py và sau đó chạy tệp main.py để kiểm tra xem module mà chúng ta đã tạo hoạt động đúng hay không.
python main.py
Kết quả: