Thứ Sáu, 14 tháng 9, 2012

Thực thi chương trình Python

        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