I.
Quá trình thực thi của chương trình Python
Quá trình thực thi của chương trình
Python gồm 2 giai đoạn:
1.
Source code của chương trình Python được thông dịch
sang dạng mã byte code bởi Python Interpreter.
2.
Mã byte code sau khi được thông dịch sẽ được
chuyển cho Python Virtual Machine thực thi.
Python Interpreter là
gì?
Interpreter( trình thông dịch) là một chương trình thực thi
các chương trình khác.
Python Interpreter chỉ là một chương trình được viết bằng C
(đây là lý do Python còn được gọi là Cpython),
nó sẽ đọc source code của chường trình python và thực thi source code đó.
Thông dịch chương
trình Python
Khi một chương
trình Python được thực thi. Đầu tiên,
Python Interpreter sẽ thông dịch code của chương trình Python thành mã byte
code. Mã bytecode sẽ được lưu vào file có
đuôi là *.pyc. Sau đó, Python sẽ thực
thi mã byte code đó
Và khi chương
trình được thực thi vào các lần tiếp theo, nếu source code của chương trình không
thay đổi, Python sẽ load mã byte code từ file pyc này để thực thi mà không cần
thực hiện lại quá trình thông dịch source code thành mã Byte code. Như vậy, chương
trình sẽ được thực thi nhanh hơn.
Vậy làm sao biết
source code của chương trình Python đó có thay đổi hay không để tiến hành thông
dịch lại ở các lần thực thi tiếp theo, hay chỉ cần load mã byte code từ file
pyc để thực thi? Câu trả lời là Python sẽ dựa vào ngày chỉnh sửa của file (Date
modified), nếu ngày chỉnh sửa của file Source code (.py) và file chứa mã byte
code (pyc) khác nhau thì nó sẽ tiến hành thông dịch lại source code thành byte
code.
Nếu Python không có quyền ghi (write access) trên máy tính, thì nó sẽ lưu mã
byte code vào memory, rồi thực thi, và mã byte code này sẽ bị xoá khi thoát chương
trình. Vậy, để cải thiện hiệu năng của chương trình, Python interpreter nên có
quyền ghi file trên ổ đĩa.
Python Virtual
Machine (PVM)
Python Virtual Machine là một phần và là bước cuối cùng
trong quá trình thực thi chương trình python của . Sau khi thông dịch source
code thành mã byte code , mã bytecode này sẽ được chuyển giao cho PMV thực thi, PVM sẽ duyệt qua từng mã byte code và thực
thi nó. Vậy PVM chính là run-time engine của python
II.
Hiệu xuất của Python
Vì là ngôn ngữ thông dịch nên tốc độ thực
thi của Python không bằng với những ngôn
ngữ biên dịch như: C#, Java…. vì Python được biên dịch thành mã bytecode, không
phải dạng mã máy ( mã nhị phân). Mã bytecode này được thực thi bởi Python Virtual Machine (PVM) mà không phải được thực
thi trực tiếp bởi CPU.
III.
C ác biến thể khác của Python
i. Cpython
Cpython chính là python, vì
Interpreter của nó được viết bằng C nên nó còn được gọi là CPython
ii.
Jython
Còn được gọi là Jpython, là một biến thể khác của Python, nó được tạo
ra cho mục đích tích hợp Python với ngôn ngữ lập trình Java. Các lập trình viên
vẫn viết các lệnh, cú pháp của Python vào file py, sau đó, file py sẽ được thông
dịch thành mã bytecode của Java và mã Byte code đó được thực thi bởi Java
Vitual Machine (JVM).
iii.
IronPython
Là một phiên bản khác của Python, nó
mới hơn Cpython và Jython. Nó được thiết kế mục đích để tích hợp với các ứng dụng được viết bằng .NET Framework của Microsoft.
Cũng như Jython, IronPython vẫn sử dụng cú pháp của Python vào file py, nhưng nó
được thực thi trong môi trường .NET.
Thach Nguyen
Thach Nguyen