Bản cập nhật JPype 1.0.2, thư viện để truy cập các lớp Java từ Python

Có sẵn bản phát hành mới của lớp xen kẽ JPype 1.0.2, cho phép các ứng dụng Python có toàn quyền truy cập vào các thư viện lớp bằng ngôn ngữ Java. Với JPype từ Python, bạn có thể sử dụng các thư viện dành riêng cho Java để tạo các ứng dụng lai kết hợp mã Java và Python. Không giống như Jython, việc tích hợp với Java đạt được không phải thông qua việc tạo một biến thể Python cho JVM mà thông qua sự tương tác ở cấp độ của cả hai máy ảo sử dụng bộ nhớ dùng chung. Cách tiếp cận được đề xuất không chỉ cho phép đạt được hiệu suất tốt mà còn cung cấp quyền truy cập vào tất cả các thư viện CPython và Java. Mã số dự án phân phối bởi được cấp phép theo Apache 2.0.

Sự thay đổi chính:

  • Một bộ đệm đã được thêm vào các cuộc gọi phương thức để tránh giải quyết tình trạng quá tải, điều này làm giảm đáng kể tác động hiệu suất của việc phân giải phương thức, đặc biệt nếu cùng một tình trạng quá tải được gọi nhiều lần, như trong quá trình thực thi vòng lặp.
  • Từ 4 đến 100 lần, tùy thuộc vào loại dữ liệu, việc chuyển danh sách, bộ dữ liệu và bộ đệm sang mảng nguyên thủy Java được tăng tốc. Quá trình chuyển đổi sử dụng khả năng xử lý tối ưu của bộ đệm trong bộ nhớ, thay vì API Sequence. Khi gặp bộ đệm Python, chỉ phần tử đầu tiên được kiểm tra để chuyển đổi, vì các bộ đệm này là đồng nhất.
  • Xử lý các thao tác tắt máy (được triển khai trong JPype 1.0.0, nhưng bị bỏ qua khi chuẩn bị nhật ký thay đổi). JPype bây giờ gọi quy trình tắt máy JVM, quy trình này cố gắng thoát ra một cách nhẹ nhàng. Điều này dẫn đến một số thay đổi trong hành vi. Các luồng không chạy trong nền (các lệnh gọi proxy) giờ đây có thể giữ JVM mở cho đến khi chúng hoàn tất. Cuộc gọi proxy sẽ xử lý việc tắt máy cho đến khi cuộc gọi hoàn tất nhưng sẽ nhận được thông báo hủy bỏ. Các tệp hiện đã được đóng đúng cách và được chuyển vào đĩa nếu các luồng xử lý ngoại lệ như mong đợi. Các hook và bộ hoàn thiện dọn dẹp tài nguyên được thực thi. Khi các luồng được sinh ra, móc AtExit sẽ được gọi. Thông qua daemon, việc đính kèm luồng tự động được triển khai khi sử dụng JVM từ Python. Mã lỗi không thể xử lý đúng cách việc dọn dẹp luồng có thể sẽ bị treo khi thực hiện tắt máy. Tài liệu bổ sung có thể được tìm thấy trong hướng dẫn sử dụng.
  • Trình bao bọc cho Throwable đã nhận được một trình bao bọc cho Object thay vì kết quả mong đợi, dẫn đến các chuyển đổi lạ từ các lớp Python.
  • Đã sửa lỗi chính tả trong hệ thống nhập dẫn đến lỗi '»jname» không tìm thấy'.
  • Đảm bảo rằng "^C" được quảng bá chính xác trong KeyboardInterrupt.
  • Đã khắc phục sự cố với các ký hiệu kể từ Python 3.5.3. PySlice_Unpack đã được giới thiệu trong bản phát hành bản vá tiếp theo (3.5.4) và đáng lẽ không nên được sử dụng.
  • Đã sửa lỗi numpy.linalg.inv dẫn đến sự cố. Sự cố được bắt nguồn từ giao tiếp luồng giữa JVM và một số lỗi phức tạp. Giải pháp được đề xuất là gọi numpy.linalg.inv trước khi khởi động JVM.

Nguồn: opennet.ru

Thêm một lời nhận xét