Hướng dẫn can you compile python to run faster? - bạn có thể biên dịch python để chạy nhanh hơn không?

Pluses:

Đầu tiên: OBFuscation nhẹ, có thể đánh bại.

Thứ hai: Nếu tổng hợp dẫn đến một tệp nhỏ hơn đáng kể, bạn sẽ nhận được thời gian tải nhanh hơn. Đẹp cho web.

Thứ ba: Python có thể bỏ qua bước tổng hợp. Nhanh hơn ở tải trọng. Tốt cho CPU và web.

Thứ tư: Bạn càng nhận xét, tệp .pyc hoặc .pyo sẽ càng nhỏ so với tệp .py nguồn.

Thứ năm: Người dùng cuối chỉ có tệp .pyc hoặc .pyo trong tay ít có khả năng giới thiệu cho bạn một lỗi mà họ gây ra bởi một thay đổi không được chuyển đổi mà họ quên nói với bạn.

Thứ sáu: Nếu bạn đang nhắm vào một hệ thống nhúng, việc lấy một tệp kích thước nhỏ hơn để nhúng có thể là một điểm cộng đáng kể và kiến ​​trúc ổn định, vì vậy, nhược điểm, chi tiết bên dưới, không phát huy tác dụng.

Biên soạn cấp cao nhất

Thật hữu ích khi biết rằng bạn có thể biên dịch tệp nguồn Python cấp cao nhất thành tệp .pyc theo cách này:

python -m py_compile myscript.py

Điều này loại bỏ ý kiến. Nó để lại

python -OO -m py_compile myscript.py
0 nguyên vẹn. Nếu bạn cũng muốn thoát khỏi
python -OO -m py_compile myscript.py
0 (bạn có thể muốn nghiêm túc suy nghĩ về lý do tại sao bạn làm điều đó) thì hãy biên dịch theo cách này thay vào đó ...

python -OO -m py_compile myscript.py

... và bạn sẽ nhận được một tệp .pyo thay vì tệp .pyc; Phân phối không kém về chức năng thiết yếu của mã, nhưng nhỏ hơn theo quy mô của ____10 bị loại bỏ (và ít được hiểu hơn đối với việc làm tiếp theo nếu nó có ____10 ở vị trí đầu tiên). Nhưng xem nhược điểm ba, bên dưới.

Lưu ý rằng Python sử dụng ngày của tệp .py, nếu có, để quyết định xem nó có nên thực thi tệp .py trái ngược với tệp .pyc hoặc .pyo --- vì vậy hãy chỉnh sửa tệp .py của bạn và .pyc hoặc .pyo bị lỗi thời và bất cứ điều gì Lợi ích bạn có được là bị mất. Bạn cần phải biên dịch lại nó để lấy lại lợi ích .pyc hoặc .pyo một lần nữa, chẳng hạn như chúng có thể.

Drawbacks:

Đầu tiên: Có một "cookie ma thuật" trong các tệp .pyc.pyo cho biết kiến ​​trúc hệ thống rằng tệp Python được biên dịch. Nếu bạn phân phối một trong các tệp này vào môi trường thuộc loại khác, nó sẽ bị hỏng. Nếu bạn phân phối .pyc hoặc .pyo mà không có liên quan .py để biên dịch lại hoặc

def f(x):
    return x**2-x

def integrate_f(a, b, N):
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

9 để nó thay thế .pyc hoặc .pyo, người dùng cuối cũng không thể sửa nó.

Thứ hai: Nếu

python -OO -m py_compile myscript.py
0 bị bỏ qua với việc sử dụng tùy chọn dòng lệnh
cdef double f(double x):
    return x**2-x

def integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, x, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

3 như được mô tả ở trên, không ai có thể có được thông tin đó, điều này có thể sử dụng mã trở nên khó khăn hơn (hoặc không thể.)

Thứ ba: Tùy chọn

cdef double f(double x):
    return x**2-x

def integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, x, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

3 của Python cũng thực hiện một số tối ưu hóa theo tùy chọn dòng lệnh
cdef double f(double x):
    return x**2-x

def integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, x, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

5; Điều này có thể dẫn đến những thay đổi trong hoạt động. Tối ưu hóa đã biết là:

  • cdef double f(double x):
        return x**2-x

    def integrate_f(double a, double b, int N):
        cdef int i
        cdef double s, x, dx
        s = 0
        dx = (b-a)/N
        for i in range(N):
            s += f(a+i*dx)
        return s * dx

    6 = 1
  • cdef double f(double x):
        return x**2-x

    def integrate_f(double a, double b, int N):
        cdef int i
        cdef double s, x, dx
        s = 0
        dx = (b-a)/N
        for i in range(N):
            s += f(a+i*dx)
        return s * dx

    7 Tuyên bố bị bỏ qua
  • cdef double f(double x):
        return x**2-x

    def integrate_f(double a, double b, int N):
        cdef int i
        cdef double s, x, dx
        s = 0
        dx = (b-a)/N
        for i in range(N):
            s += f(a+i*dx)
        return s * dx

    8 = Sai

Thứ tư: Nếu bạn đã cố tình thực hiện tập lệnh Python của mình bằng một cái gì đó theo thứ tự

cdef double f(double x):
    return x**2-x

def integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, x, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

9 trên dòng đầu tiên, thì điều này sẽ bị loại bỏ trong các tệp .pyc.pyo và chức năng đó bị mất.

Thứ năm: với tùy chọn -O, cũng như -OO,

cdef double f(double x):
    return x**2-x

def integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, x, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

7 Các câu lệnh không được biên dịch, loại bỏ một nguồn xác thực thời gian chạy. Bạn có thể bù đắp cho điều này bằng cách sử dụng .pyc3 .pyc4 nhưng điều này đòi hỏi phải từ bỏ tuyên bố Assert để sử dụng trong bất cứ điều gì sẽ được biên soạn.

Thứ sáu: Có phần rõ ràng, nhưng nếu bạn biên dịch mã của mình, việc sử dụng nó không chỉ có thể bị ảnh hưởng, mà khả năng người khác học hỏi từ công việc của bạn bị giảm, thường là nghiêm trọng.

Một siêu của Python biên dịch thành C, Cython kết hợp sự dễ dàng của Python và tốc độ của mã gốc

Nhà văn cao cấp, Infoworld |InfoWorld |

Hướng dẫn can you compile python to run faster? - bạn có thể biên dịch python để chạy nhanh hơn không?
ThinkStock

Mục lục

Cho xem nhiều hơn

Python có tiếng là một trong những ngôn ngữ lập trình thuận tiện nhất, được trang bị phong phú nhất và hết sức hữu ích. Tốc độ thực thi? Không nhiều lắm.

Nhập Cython. Ngôn ngữ Cython là một superset của Python biên dịch thành C, năng suất & nbsp; Hiệu suất tăng cường có thể dao động từ một vài phần trăm đến một số đơn đặt hàng, tùy thuộc vào nhiệm vụ trong tay. Đối với công việc bị ràng buộc bởi các loại đối tượng bản địa của Python, các tốc độ đã giành được rất lớn. Nhưng đối với các hoạt động số, hoặc bất kỳ hoạt động nào không liên quan đến nội bộ của Python, thì lợi nhuận có thể rất lớn. & NBSP;

Với Cython, bạn có thể bỏ qua nhiều giới hạn bản địa của Python, hoặc vượt qua chúng hoàn toàn mà không cần phải từ bỏ sự dễ dàng và thuận tiện của Python. Trong bài viết này, chúng tôi sẽ đi qua các khái niệm cơ bản đằng sau Cython và tạo ra một ứng dụng Python đơn giản sử dụng Cython để tăng tốc một trong những chức năng của nó.

Biên dịch python với c

Mã Python có thể thực hiện các cuộc gọi trực tiếp vào các mô -đun C. Các mô -đun C này có thể là thư viện C chung hoặc thư viện được xây dựng đặc biệt để hoạt động với Python. Cython tạo ra loại mô -đun thứ hai: các thư viện C mà & nbsp; nói chuyện với nội bộ Python, và có thể được gói với mã Python hiện có.

Mã Cython trông rất giống mã Python, theo thiết kế. Nếu bạn cung cấp cho trình biên dịch Cython, một chương trình Python (Python 2.x và Python 3.x đều được hỗ trợ), Cython sẽ chấp nhận nó, nhưng không có gia tốc bản địa nào của Cython sẽ phát huy tác dụng. Nhưng nếu bạn trang trí mã Python với các chú thích loại trong & nbsp; Cython, cú pháp đặc biệt, Cython sẽ có thể thay thế các tương đương nhanh C cho các đối tượng Python chậm.

Lưu ý rằng cách tiếp cận của Cython là & nbsp; gia tăng. Điều đó có nghĩa là một nhà phát triển có thể bắt đầu với một ứng dụng Python hiện tại và tăng tốc bằng cách thực hiện các thay đổi tại chỗ đối với mã, thay vì viết lại toàn bộ ứng dụng từ đầu.

Cách tiếp cận này phù hợp với bản chất của các vấn đề hiệu suất phần mềm nói chung. Trong hầu hết các chương trình & nbsp;, phần lớn mã chuyên sâu CPU tập trung trong một vài điểm nóng, một phiên bản của nguyên tắc Pareto, còn được gọi là quy tắc 80/20/20. Do đó, hầu hết các mã trong một ứng dụng Python không cần phải được tối ưu hóa hiệu suất, chỉ là một vài phần quan trọng. & NBSP; bạn có thể dịch tăng dần các điểm nóng đó thành Cython và do đó, nhận được mức tăng hiệu suất mà bạn cần ở nơi quan trọng nhất. Phần còn lại của chương trình có thể vẫn ở Python để thuận tiện cho các nhà phát triển.

Cách sử dụng Cython

Hãy xem xét mã sau, được lấy từ tài liệu Cython,:

def f(x):
    return x**2-x

def integrate_f(a, b, N):
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

Đây là một ví dụ đồ chơi, một triển khai không hiệu quả của một chức năng tích hợp. Như mã Python thuần túy, nó chậm, & nbsp; vì Python phải chuyển đổi qua lại giữa các loại số bản địa và các loại đối tượng bên trong của chính nó.

Bây giờ hãy xem xét phiên bản Cython của cùng một mã, với các bổ sung Cython đã nhấn mạnh:

cdef double f(double x):
    return x**2-x

def integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, x, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

Nếu chúng ta khai báo rõ ràng các loại biến, cả cho các tham số hàm và các biến được sử dụng trong phần thân của hàm (.pyc5, .pyc6, v.v.) Các chức năng được thực hiện chủ yếu trong C cho tốc độ bổ sung, mặc dù các chức năng đó chỉ có thể được gọi bởi các hàm Cython khác chứ không phải bởi các tập lệnh Python. Trong ví dụ trên, chỉ .pyc8 có thể được gọi bằng một tập lệnh Python khác, bởi vì nó sử dụng .pyc9; ________ 47 & nbsp; các chức năng không thể được truy cập từ Python vì chúng là C thuần túy và không có giao diện Python.

Lưu ý mức độ ít thực tế của chúng tôi & nbsp; mã đã thay đổi. Tất cả những gì chúng tôi đã thực hiện là thêm khai báo loại vào mã hiện có để có được hiệu suất tăng đáng kể.

Ưu điểm của Cython

Ngoài việc có thể tăng tốc mã mà bạn đã viết, Cython cấp một số lợi thế khác:

Làm việc với các thư viện C bên ngoài có thể nhanh hơn

Các gói Python như các thư viện NUMPY WRAP C trong giao diện Python để làm cho chúng dễ làm việc. Tuy nhiên, đi qua lại giữa Python và C thông qua những người bao bọc đó có thể làm mọi thứ chậm lại. Cython cho phép bạn nói chuyện trực tiếp với các thư viện cơ bản mà không có Python trên đường. (Thư viện C ++ cũng được hỗ trợ.)

Bạn có thể sử dụng cả quản lý bộ nhớ C và Python

Nếu bạn sử dụng các đối tượng Python, chúng được quản lý bộ nhớ và thu hút rác giống như trong Python thông thường. Nhưng nếu bạn muốn tạo và quản lý các cấu trúc cấp C của riêng mình và sử dụng ________ 51/________ 52 để làm việc với chúng, bạn có thể làm như vậy. Chỉ cần nhớ dọn dẹp sau khi chính mình.

Bạn có thể chọn an toàn hoặc tốc độ khi cần thiết & nbsp;

Cython tự động thực hiện kiểm tra thời gian chạy cho các vấn đề phổ biến xuất hiện trong C, chẳng hạn như truy cập ngoài giới hạn trên một mảng, bằng cách trang trí và chỉ thị trình biên dịch (ví dụ: ____ 53). & NBSP; Do đó, mã C do Cython tạo ra là nhiều An toàn hơn theo mặc định so với mã C cán tay, mặc dù có khả năng phải trả giá bằng hiệu suất thô.

Nếu bạn tự tin rằng bạn đã thắng cần những kiểm tra đó vào thời gian chạy, bạn có thể vô hiệu hóa chúng để tăng tốc độ, trên toàn bộ mô -đun hoặc chỉ trên các chức năng chọn lọc.

Cython cũng cho phép bạn truy cập tự nhiên các cấu trúc Python sử dụng giao thức bộ đệm để truy cập trực tiếp vào dữ liệu được lưu trữ trong bộ nhớ (không sao chép trung gian). Bộ nhớ của Cython & nbsp; cho phép bạn làm việc với các cấu trúc đó ở tốc độ cao và với mức độ an toàn phù hợp với nhiệm vụ. Thời gian chạy Python (chậm).

Mã Cython C có thể được hưởng lợi từ việc phát hành Gil

Khóa thông dịch viên toàn cầu của Python, hoặc Gil, đồng bộ hóa các chủ đề trong phiên dịch viên, bảo vệ quyền truy cập vào các đối tượng Python và quản lý sự tranh chấp về tài nguyên.

Nếu bạn có một phần mã không có tài liệu tham khảo nào về các đối tượng Python và thực hiện một hoạt động chạy dài, bạn có thể đánh dấu nó bằng Chỉ thị & NBSP; ____ 54 để cho phép nó chạy mà không cần Gil. Điều này giải phóng người phiên dịch Python để làm những việc khác trong thời gian tạm thời và cho phép mã Cython sử dụng nhiều lõi (với công việc bổ sung).

Cython có thể sử dụng cú pháp gợi ý loại Python & NBSP;

Python & nbsp; có cú pháp gõ kiểu được sử dụng chủ yếu bởi các trình kiểm tra lin và mã mã, thay vì trình thông dịch CPython. Cython có cú pháp tùy chỉnh riêng cho trang trí mã, nhưng với các bản sửa đổi gần đây của Cython, bạn có thể sử dụng cú pháp Python Type-Hinta để cung cấp các gợi ý loại cơ bản cho Cython. Được gọi là "Chế độ Pure-Python", nó không cho phép toàn bộ các tính năng của Cython, nhưng đủ trong số đó để bạn có thể hoàn thành nhiều tác vụ giống nhau với các ký hiệu ít khó xử hơn. & NBSP; Đọc thêm về cách sử dụng chế độ Pure-Python Trong bài viết riêng của chúng tôi.

Cython có thể được sử dụng để che khuất mã python nhạy cảm

Các mô -đun Python rất dễ phân hủy và kiểm tra, nhưng các nhị phân được biên dịch thì không. Khi phân phối ứng dụng Python cho người dùng cuối, nếu bạn muốn bảo vệ một số mô -đun của nó khỏi rình mò thông thường, bạn có thể làm như vậy bằng cách biên dịch chúng với Cython.

Tuy nhiên, lưu ý, đây là một tác dụng phụ của khả năng Cython, không phải là một trong những chức năng dự định của nó. Ngoài ra, không thể phân hủy hoặc kỹ thuật đảo ngược một nhị phân nếu một người được dành riêng hoặc đủ xác định. Và theo nguyên tắc chung, bí mật, chẳng hạn như mã thông báo hoặc thông tin nhạy cảm khác, không bao giờ được ẩn giấu trong các nhị phân - chúng thường dễ dàng vạch trần với một bãi Hex đơn giản.

Hạn chế Cython

Hãy nhớ rằng Cython là một cây đũa thần. Nó không tự động biến mọi thể hiện của mã Python Poky thành mã C nhanh. Để tận dụng tối đa Cython, bạn phải sử dụng nó một cách khôn ngoan và hiểu những hạn chế của nó:

Little Speedup cho mã Python thông thường

Khi Cython gặp mã Python, nó có thể dịch hoàn toàn thành C, nó sẽ chuyển đổi mã đó thành một loạt các cuộc gọi C sang nội bộ Python. Số tiền này để đưa trình thông dịch Python ra khỏi vòng lặp thực thi, điều này mang lại cho mã tốc độ tăng tốc 15 đến 20 phần trăm khi mặc định. Lưu ý rằng đây là một trường hợp tốt nhất; Trong một số tình huống, bạn có thể thấy không có cải thiện hiệu suất, hoặc thậm chí là suy thoái hiệu suất.

Little Speedup cho các cấu trúc dữ liệu Python bản địa

Python cung cấp một loạt các cấu trúc dữ liệu, các danh sách, danh sách, bộ dữ liệu, từ điển, v.v. Họ rất thuận tiện cho các nhà phát triển và họ đi kèm với quản lý bộ nhớ tự động của riêng họ. Nhưng họ chậm hơn Pure C.

Cython cho phép bạn tiếp tục sử dụng tất cả các cấu trúc dữ liệu Python, mặc dù không có nhiều tốc độ. Điều này, một lần nữa, bởi vì Cython chỉ đơn giản gọi các API C trong thời gian chạy Python tạo ra và thao túng các đối tượng đó. Do đó, các cấu trúc dữ liệu Python hoạt động giống như mã python được tối ưu hóa trên Cython nói chung: đôi khi bạn có được sự tăng cường, nhưng chỉ một chút. & Nbsp; để có kết quả tốt nhất, sử dụng các biến C và cấu trúc. Tin tốt là Cython giúp bạn dễ dàng làm việc với họ.

Mã cython chạy nhanh nhất khi là tinh khiết c ”

Nếu bạn có một chức năng trong C được dán nhãn từ khóa .pyc7, với tất cả các biến và chức năng nội tuyến của nó đến những thứ khác là C thuần túy, nó sẽ chạy nhanh như C có thể đi. Nhưng nếu chức năng đó tham chiếu bất kỳ mã bản địa Python nào, như cấu trúc dữ liệu Python hoặc cuộc gọi đến API Python nội bộ, cuộc gọi đó sẽ là nút cổ chai hiệu suất.

May mắn thay, Cython cung cấp một cách để phát hiện ra những tắc nghẽn này: A & NBSP; Báo cáo mã nguồn & nbsp; hiển thị trong nháy mắt phần nào trong ứng dụng Cython của bạn là C thuần túy và các phần tương tác với Python. Ứng dụng tối ưu hóa tốt hơn, càng ít tương tác với Python.

Hướng dẫn can you compile python to run faster? - bạn có thể biên dịch python để chạy nhanh hơn không?
Idg

Một báo cáo mã nguồn được tạo cho một ứng dụng Cython. Các khu vực màu trắng là C thuần khiết; Các khu vực trong màu vàng cho thấy sự tương tác với nội bộ Python. Một chương trình Cython được tối ưu hóa tốt sẽ có ít màu vàng nhất có thể. Dòng cuối cùng được mở rộng cho thấy mã C làm trung gian mã Cython tương ứng của nó.

Cython Numpy & NBSP;

Cython cải thiện việc sử dụng các thư viện số thứ ba dựa trên C như Numpy. Bởi vì mã Cython biên dịch thành C, nó có thể tương tác trực tiếp với các thư viện đó và đưa các tắc nghẽn Python ra khỏi vòng lặp.

Nhưng Numpy, đặc biệt, hoạt động tốt với Cython. Cython có sự hỗ trợ bản địa cho các công trình cụ thể trong Numpy và cung cấp quyền truy cập nhanh vào các mảng numpy. Và cùng một cú pháp Numpy quen thuộc mà bạn sử dụng trong tập lệnh Python thông thường có thể được sử dụng trong Cython AS-IS.

Tuy nhiên, nếu bạn muốn tạo các ràng buộc gần nhất có thể giữa Cython và Numpy, bạn cần trang trí thêm mã với cú pháp tùy chỉnh Cython. Ví dụ, câu lệnh & nbsp; ____ 56 cho phép mã Cython xem các cấu trúc cấp C trong các thư viện tại thời điểm biên dịch cho các ràng buộc nhanh nhất có thể.

Vì Numpy được sử dụng rộng rãi, Cython hỗ trợ Numpy ra khỏi hộp. Nếu bạn đã cài đặt Numpy, bạn chỉ có thể trạng thái & nbsp;

Hồ sơ và hiệu suất của Cython

Bạn có được hiệu suất tốt nhất từ ​​bất kỳ đoạn mã nào bằng cách định lập nó và nhìn thấy tận mắt nơi các nút thắt. Cython cung cấp các móc cho mô -đun CPROFILE của Python, vì vậy bạn có thể sử dụng các công cụ định hình riêng của Python, như CPROFILE, để xem mã Cython của bạn hoạt động như thế nào. & NBSP;

Nó giúp ghi nhớ trong tất cả các trường hợp mà Cython không phải là ma thuật, đó là các hoạt động hiệu suất trong thế giới thực hợp lý vẫn được áp dụng.

Chẳng hạn, nếu bạn có một bộ sưu tập các đối tượng bạn muốn xử lý ở Cython, thì hãy lặp đi lặp lại nó trong Python và gọi một hàm Cython ở mỗi bước. Chuyển toàn bộ bộ sưu tập cho mô -đun Cython của bạn và lặp lại ở đó. Kỹ thuật này được sử dụng thường xuyên trong các thư viện quản lý dữ liệu, do đó, nó là một mô hình tốt để mô phỏng mã của riêng bạn.

Chúng tôi sử dụng Python vì nó cung cấp sự thuận tiện cho lập trình viên và cho phép phát triển nhanh. Đôi khi năng suất của lập trình viên có chi phí hiệu suất. Với Cython, chỉ cần thêm một chút nỗ lực có thể mang lại cho bạn những điều tốt nhất của cả hai thế giới.

Đọc thêm về Python

  • Python là gì? Lập trình mạnh mẽ, trực quan
  • Pypy là gì? Python nhanh hơn không đau
  • Cython là gì? Python với tốc độ của c
  • Hướng dẫn Cython: Cách tăng tốc Python
  • Cách cài đặt Python theo cách thông minh
  • Các tính năng mới tốt nhất trong Python 3.8
  • Quản lý dự án Python tốt hơn với thơ
  • VirtualEnv và Venv: Môi trường ảo Python được giải thích
  • Python Virtualenv và Venv Do, và don
  • Python ren và các quy trình con được giải thích
  • Cách sử dụng Trình gỡ lỗi Python
  • Cách sử dụng TimeIt để hồ sơ mã Python
  • Cách sử dụng CPROFILE để cấu hình mã Python
  • Bắt đầu với Async trong Python
  • Cách sử dụng Asyncio trong Python
  • Cách chuyển đổi Python thành JavaScript (và trở lại)
  • Python 2 EOL: Làm thế nào để sống sót sau khi kết thúc Python 2
  • 12 con trăn cho mọi nhu cầu lập trình
  • 24 Thư viện Python cho mỗi nhà phát triển Python
  • 7 ides python ngọt ngào bạn có thể đã bỏ lỡ
  • 3 Thiếu sót của Python chính và các giải pháp của họ
  • 13 khung web Python được so sánh
  • 4 Khung kiểm tra Python để nghiền nát lỗi của bạn
  • 6 tính năng python mới tuyệt vời mà bạn không muốn bỏ lỡ
  • 5 Phân phối Python để làm chủ việc học máy
  • 8 Thư viện Python tuyệt vời để xử lý ngôn ngữ tự nhiên

Serdar Yegulalp là một nhà văn cao cấp tại Infoworld, tập trung vào học máy, container hóa, devops, hệ sinh thái Python và đánh giá định kỳ.

Bản quyền © 2020 IDG Communications, Inc.

Làm thế nào tôi có thể tăng tốc độ chạy trăn?

Tài liệu nền tảng nhận dạng Loginradius..
Một vài cách để tăng tốc mã Python của bạn ..
Sử dụng cấu trúc dữ liệu thích hợp ..
Giảm sử dụng cho vòng lặp ..
Sử dụng danh sách hiểu ..
Sử dụng nhiều bài tập ..
Không sử dụng các biến toàn cầu ..
Sử dụng chức năng thư viện ..
Chuỗi Concatenate với tham gia ..

Được biên dịch Python nhanh như C?

Tuy nhiên, Python đi kèm với một nhược điểm lớn: nó chậm hơn nhiều so với các ngôn ngữ được biên dịch như C hoặc C ++.It is much slower than compiled languages like C or C++.

Có thể biên dịch Python không?

Đối với hầu hết các phần, Python là một ngôn ngữ được giải thích và không phải là một ngôn ngữ được biên dịch, mặc dù tổng hợp là một bước.Mã Python, được viết trong.Tệp PY lần đầu tiên được biên dịch cho những gì được gọi là mã byte (được thảo luận chi tiết hơn nữa) được lưu trữ với a.pyc hoặc.Python is an interpreted language and not a compiled one, although compilation is a step. Python code, written in . py file is first compiled to what is called bytecode (discussed in detail further) which is stored with a . pyc or .

Làm cách nào để làm cho mã python của tôi chạy nhanh hơn 10 lần?

Kiểm tra danh sách các mẹo mã tốc độ Python và cũng đánh dấu bài viết này cho tương lai ...
Sử dụng danh sách hiểu.....
Sử dụng các chức năng thư viện.....
Sử dụng tham gia để kết hợp chuỗi.....
Sử dụng 1 cho bất kỳ vòng lặp vô cực.....
Nhiều nhiệm vụ.....
Sử dụng thư viện C.....
Cập nhật phiên bản Python của bạn.....
Cấu trúc dữ liệu thích hợp ..