Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Sử dụng Cython để bảo vệ và compile Source Code Python - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

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ả: 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *