主な変更点:
- オーバーロード解決を回避するためにメソッド呼び出しにキャッシュが追加されました。これにより、特にループ実行中など同じオーバーロードが何度も呼び出される場合、メソッド解決によるパフォーマンスへの影響が大幅に軽減されます。
- データ型に応じて、Java プリミティブの配列へのリスト、タプル、およびバッファの転送が 4 ~ 100 倍高速化されます。 変換では、シーケンス API の代わりに、メモリ内バッファーの最適化された処理が使用されます。 Python バッファーが見つかった場合、これらのバッファーは同種であるため、最初の要素のみが変換のためにチェックされます。
- シャットダウン操作の処理 (JPype 1.0.0 で実装されましたが、変更ログの準備時にスキップされました)。 JPype は JVM シャットダウン ルーチンを呼び出し、正常に終了しようとします。 これにより、動作にいくつかの変化が生じます。 非バックグラウンド スレッド (プロキシ呼び出し) は、終了するまで JVM を開いたままにできるようになりました。 プロキシ呼び出しは、呼び出しが完了するまでシャットダウンを処理しますが、中止メッセージを受け取ります。 スレッドが期待どおりに例外を処理した場合、ファイルは適切に閉じられ、ディスクにフラッシュされるようになりました。 リソースのクリーンアップ フックとファイナライザーが実行されます。 スレッドが生成されると、AtExit フックが呼び出されます。 Python から JVM を使用する場合、デーモンを通じて自動スレッド接続が実装されます。 スレッドのクリーンアップを適切に処理できないバグのあるコードは、シャットダウンの実行時にハングする可能性があります。 追加のドキュメントはユーザーマニュアルに記載されています。
- Throwable のラッパーが、予期した結果ではなく Object のラッパーを受け取ったため、Python クラスからの奇妙な変換が発生しました。
- 「»jname» が見つかりません」というエラーを引き起こすインポート システムのタイプミスを修正しました。
- KeyboardInterrupt で「^C」が正しくプロモートされるようにしました。
- Python 3.5.3 以降のシンボルに関する問題を修正しました。 PySlice_Unpack は後続のパッチ リリース (3.5.4) で導入されたため、使用すべきではありませんでした。
- クラッシュを引き起こす numpy.linalg.inv のバグを修正しました。 この問題は、JVM といくつかの numpy フレーバー間のスレッド通信に起因することが追跡されています。 提案される解決策は、JVM を開始する前に numpy.linalg.inv を呼び出すことです。
出所: オープンネット.ru