Python có trở nên nhanh hơn không?
Python là ngôn ngữ lập trình rất phổ biến (và ngày càng tăng), nhờ vai trò hàng đầu của nó trong các lĩnh vực như khoa học dữ liệu hoặc trí tuệ nhân tạo. Tuy nhiên, với việc mã hóa dễ dàng là một trong những mục tiêu sáng lập của nó, tốc độ là thứ đã bị bỏ quên trong suốt quá trình phát triển của nó. Show
Trên thực tế, các ngôn ngữ cấp thấp như C lịch sử tạo ra mã có khả năng chạy nhanh hơn tới 100 lần, tùy thuộc vào tác vụ hiện tại. Tất nhiên, số lượng luồng càng cao thì khoảng cách hiệu suất càng rõ ràng. Vì điều này, chính Microsoft vào năm ngoái đã quyết định tài trợ cho một dự án nhằm tăng gấp đôi tốc độ của Python trong các phiên bản tương lai Phiên bản beta mới vừa được tung ra thị trường và bạn có thể nói rằng nó mới và sẵn sàng để chạyPhiên bản beta đầu tiên của phiên bản cuối cùng sẽ là phiên bản 3. 11 của Python đã được cung cấp cho công chúng trên Internet vào đầu tháng này. Dữ liệu hiệu suất mà Python Software Foundation đã cung cấp về phiên bản mới này là thứ đang thu hút sự chú ý nhiều nhất của nó. Ngoài một số thay đổi và tính năng, đây là điều thu hút nhiều sự quan tâm nhất Các thử nghiệm, đã được thực hiện chạy trên phần mềm Ubuntu Linux được viết bằng Python và được biên dịch bằng trình biên dịch GCC, cho thấy kết quả có tốc độ cao hơn tới 60% trong một số trường hợp (trung bình là 25%) so với Python 3. 10, không cần thực hiện bất kỳ thay đổi nào đối với mã
Tại Phoronix, họ đã sử dụng ứng dụng đo điểm chuẩn Pybench — một bộ gồm 31 bài kiểm tra đánh giá các khía cạnh khác nhau của ngôn ngữ Python (e. g. các phép toán số học, gọi phương thức, truy cập thuộc tính…) — để chứng minh hoặc bác bỏ tuyên bố của nhà phát triển. Và kết quả thật thuyết phục tổng trung bìnhĐiểm chuẩn Python (Nguồn. lân quang)điểm chuẩn. ĐiĐiểm chuẩn Python (Nguồn. lân quang)điểm chuẩn. 2 đến 3Điểm chuẩn Python (Nguồn. lân quang)điểm chuẩn. sự hỗn loạnĐiểm chuẩn Python (Nguồn. Phorotix)Điều gì đã thay đổi?Thành tựu này đã được thực hiện, trong số các lý do khác, mà không cần phải thay đổi mức tiêu thụ bộ nhớ của Python 3. 11, cho đến thời điểm này, vẫn không đổi. Trên thực tế, những người tạo ra Python đã làm rõ trong tài liệu của họ rằng những thay đổi bắt nguồn từ hai lĩnh vực chính "Trăn 3. 11 sẽ là thành quả của nỗ lực nhiều năm của CPython nhằm biến Python thành ngôn ngữ lập trình nhanh hơn," báo cáo của ZDNet. Mặc dù Python là một ngôn ngữ năng động, dễ học với cú pháp đơn giản, nhưng nó tương đối chậm khi so sánh với các ngôn ngữ như Java, Go, C và C++ So sánh các khung phổ biến được xây dựng bằng Python (Django) và các ngôn ngữ như Go (Gin) cho thấy khung Go chạy nhiều yêu cầu hơn mỗi giây (114 963) so với Django (8 945); Lý do cơ bản đằng sau việc mã Python thực thi chậm này là vì nó là ngôn ngữ viết động. Ví dụ, Java là một ngôn ngữ được nhập tĩnh chạy tất cả các kiểm tra cần thiết và biên dịch mã trước khi chạy; Mặt khác, Python là ngôn ngữ được biên dịch trong thời gian chạy bởi vì, là ngôn ngữ được viết động, bất kỳ loại hoặc giá trị biến nào cũng có thể thay đổi trong khi chương trình đang chạy. Vì lý do này, mã Python không thể được biên dịch trước và do đó, mã không thể được tối ưu hóa trong thời gian chạy như chúng ta có trong các ngôn ngữ cấp thấp như Java hoặc C Một lý do khác đằng sau việc Python thực thi chậm so với các ngôn ngữ như Java hoặc C là vì Python là ngôn ngữ được thông dịch - trong khi Java là ngôn ngữ máy Một ngôn ngữ được giải thích như Python cần được chuyển đổi thành ngôn ngữ máy trước khi thực thi; Ngay cả khi Python chậm hơn, nó có một cú pháp đơn giản và một số lượng lớn các thư viện và cộng tác viên. Điều này có thể giải thích một phần lý do tại sao nó được sử dụng trong nhiều lĩnh vực phổ biến và ít phổ biến hơn như các tác vụ dành riêng cho GPU như học máy và trí tuệ nhân tạo Vì vậy, không có cách nào để làm cho Python nhanh hơn?Có một số cách bạn có thể thực hiện để làm cho chương trình Python của mình nhanh hơn bằng cách sử dụng Mô-đun đa xử lýPython là ngôn ngữ không cho phép đồng thời thông qua đa luồng. Đa luồng cho phép các phần chương trình khác nhau chạy đồng thời trên các lõi CPU riêng biệt, giúp chương trình chạy nhanh hơn Python có một khóa trình thông dịch toàn cầu không cho phép nó thực hiện đa luồng; Mô-đun đa xử lý của Python bỏ qua khóa trình thông dịch chung và cho phép bạn có nhiều trình thông dịch chạy đồng thời để thực thi chương trình Python của bạn nhanh hơn. Tuy nhiên, bạn có thể gặp sự cố với bộ nhớ dùng chung và khóa tiện ích mở rộng CNgoài mô-đun đa xử lý, việc viết phần mở rộng C cho mã Python của bạn có thể cải thiện đáng kể thời gian chạy chương trình của bạn Việc triển khai Python mặc định, CPython, được viết bằng C Do đó, bạn có thể viết mã C dưới dạng phần mở rộng cho mã python của mình C là ngôn ngữ cấp thấp nhanh sẽ giúp chương trình Python của bạn chạy nhanh hơn Nhưng, cả hai phương pháp này cũng có nhược điểm của họ. Khó có thể chạy mô-đun đa xử lý một cách hiệu quả do chia sẻ và khóa bộ nhớ trong khi sử dụng phần mở rộng C; Tuy nhiên, tất cả những điều này sắp thay đổiNgười tạo ra ngôn ngữ Python, Guido Van Rossum, đã tiết lộ kế hoạch giúp Python nhanh hơn để đóng góp cho Hội nghị thượng đỉnh ngôn ngữ Python ảo năm 2021 được tổ chức vào tháng 5 Để cải thiện Python 3 được phát hành gần đây. 10, kế hoạch tăng tốc Python lên gấp 2 lần sẽ bắt đầu với Python 3. 11 Trong bài thuyết trình đã xuất bản, Van Rossum giải thích rằng dự án cải thiện hiệu suất Python được xử lý bởi một "nhóm nhỏ do Microsoft tài trợ" như một phần trong cách Microsoft trả lại cho cộng đồng Python Bài thuyết trình của Guido Van Rossum, Hội nghị thượng đỉnh ngôn ngữ Python ảo năm 2021 Ông đảm bảo rằng nhóm cũng sẽ chăm sóc bảo trì và hỗ trợ, và dự án sẽ là nguồn mở Theo kế hoạch, Van Rossum chỉ ra rằng dự án tăng tốc Python sẽ diễn ra tuần tự, nhắm mục tiêu gấp 2 lần trong Python 3. 11 và tốc độ tối đa gấp 5 lần trong các bản phát hành Python tiếp theo Bài thuyết trình của Guido Van Rossum, Hội nghị thượng đỉnh ngôn ngữ Python ảo năm 2021 Nhưng liệu nhóm có thể đạt được tốc độ này?Van Rossum nói rằng họ không chắc chắn rằng họ sẽ đạt được gấp đôi, nhưng họ "lạc quan và tò mò" Anh ấy đã đưa ra một số yếu tố ràng buộc mà họ phải làm việc vì đạt được tốc độ gấp đôi trong phiên bản 3. 11 có thể khó Ông tuyên bố rằng bất kỳ thay đổi và cải tiến nào đối với Python không được phá vỡ tính ổn định của khả năng tương thích giao diện nhị phân ứng dụng (ABI); . Nó không được phá vỡ hoặc làm chậm các trường hợp cực đoan. Ông nói thêm rằng việc sửa đổi phải "giữ cho mã có thể duy trì được. " Làm thế nào để họ có kế hoạch đạt được tốc độ gấp đôi trong Python 3. 11?Trong các yếu tố hạn chế, Rossum và nhóm dự án cải tiến Python đã xác định một số khía cạnh mà họ tự do thay đổi để đạt tốc độ gấp 2 lần trong phiên bản 3. 11 Vì trình biên dịch và trình thông dịch mã byte là các thành phần thay đổi trong mỗi phiên bản phát hành, nên đây là một ứng cử viên tuyệt vời để tối ưu hóa tốc độ mà không vi phạm bất kỳ điều gì Ông đề xuất giới thiệu "trình thông dịch bytecode thích ứng, chuyên dụng"; . Điều này sẽ hoạt động giống như một bộ đệm nội tuyến giúp tăng tốc độ thực thi Tối ưu hóa tốc độ được đề xuất khác cho Python 3. 11 bao gồm tối ưu hóa ngăn xếp khung, chứng minh tốc độ gọi hàm, thay đổi định dạng tệp pyc và thực hiện xử lý ngoại lệ hiệu quả hơn Tùy thuộc vào những cải tiến về tốc độ mà nhóm có thể đạt được trong Python 3. 11, Rossum tuyên bố rằng có thể đạt được tốc độ gấp 5 lần, nhưng "chúng ta sẽ phải sáng tạo. " Có cách nào hiệu quả để cải thiện tốc độ Python trước Python 3 không. 11?Trăn 3. 11, được đề xuất đi kèm với các cải tiến giúp Python nhanh hơn, sẽ không được phát hành cho đến năm 2022. Trước đó, chúng ta cần tìm cách tăng tốc các chương trình Python của mình Để tăng tốc các chương trình Python của bạn, chúng tôi có thể triển khai các mô-đun đa xử lý Python hoặc sử dụng mã C làm phần mở rộng Python, như đã giải thích trước đó Bạn cũng có thể sử dụng trình biên dịch JIT chẳng hạn như Numba nếu bạn đang sử dụng NumPy Numba là trình biên dịch JIT tức thời, sử dụng trình trang trí để chuyển đổi mã Python và NumPy thành mã máy. Nó hoạt động bằng cách biên dịch mã Python, thay thế trình thông dịch Python, sau đó làm cho các hàm Python biên dịch trực tiếp thành mã máy, do đó cải thiện tốc độ trong thời gian chạy Numba dịch các hàm Python sang mã máy được tối ưu hóa trong thời gian chạy bằng thư viện trình biên dịch LLVM tiêu chuẩn ngành Khi sử dụng Numba, bạn không cần thay thế trình thông dịch Python, chạy một bước biên dịch riêng hoặc thậm chí cài đặt trình biên dịch C/C++. Bạn chỉ cần áp dụng một trong các trình trang trí Numba cho hàm Python của mình và Numba sẽ thực hiện phần còn lại
Các nhà phát triển API cũng có thể sử dụng FastAPI, một khung web hiện đại, nhanh (hiệu suất cao) để xây dựng API với Python 3. 6+ dựa trên gợi ý loại Python tiêu chuẩn. Điểm chuẩn của TechEmpower cho thấy các ứng dụng FastAPI chạy trong Uvicorn là một trong những khung Python nhanh nhất hiện có TechEmpower đo lường và xuất bản các điểm chuẩn hiệu suất thường xuyên của một số nền tảng ứng dụng web, khung công tác đầy đủ và khung vi mô Nếu bạn đã quen với Flask thì việc học FastAPI sẽ không tốn quá nhiều thời gian của bạn
Đối với phát triển không phải API, nếu bạn muốn hoán đổi Django hoặc Flask phổ biến trong một số khối lượng công việc nhạy cảm với thời gian, bạn có thể xem xét các khung ít được sử dụng hơn như Falcon, Chai và apidaora. Theo dự án Web Frameworks Benchmark, Falcon (3), Chai (0. 12) và apidaora (0. 28) là 3 framework Python nhanh nhất dành cho Python 3. 9 Python sẽ trở nên nhanh hơn?Tất nhiên, Python có thể được tăng tốc theo nhiều cách khác nhau, bao gồm cả việc sử dụng thời gian chạy thay thế để ngắt các mô-đun được viết bằng C/C++ , . Tuy nhiên, các phương thức này không hoạt động với CPython, đây là triển khai tham chiếu của Python, phiên bản ngôn ngữ được sử dụng rộng rãi nhất.
Có đáng học Python vào năm 2022 không?Vâng, học Python rất đáng để học vào năm 2022 vì một số lĩnh vực hot nhất trong công nghệ – bao gồm học máy và trí tuệ nhân tạo – phụ thuộc rất nhiều vào các lập trình viên có kỹ năng Python.
Python có còn nhu cầu vào năm 2022 không?“Mặc dù Python đã tồn tại hàng thập kỷ, nhưng nhu cầu về các kỹ năng Python vào năm 2022 sẽ tiếp tục tăng theo cấp số nhân nhờ vào việc sử dụng nó trong sự bùng nổ . Bạn muốn trở thành một lập trình viên Python?
Sẽ Trăn 3. 10 nhanh hơn?Như Van Rossum đã nói, theo thông tin chính thức, bản phát hành mới nhất của Python 3. 11 nhanh hơn 10–60% so với Python 3. 10 và thân thiện hơn với người dùng. |