Atualização do JPype 1.0.2, biblioteca para acesso a classes Java a partir do Python

Disponível nova versão do middleware JPype 1.0.2, que permite acesso completo a bibliotecas de classes em Java a partir de aplicações Python. Com o JPype, é possível utilizar bibliotecas específicas de Java, criando aplicações híbridas que combinam código em Java e Python. Ao contrário do Jython, a integração com Java não é feita através da criação de uma versão do Python para a JVM, mas através de interação entre as duas máquinas virtuais, utilizando memória compartilhada. A abordagem proposta permite não apenas um bom desempenho, mas também acesso a todas as bibliotecas do CPython e do Java. O código do projeto é distribuído estão sob a licença Apache 2.0.

Principais mudanças:

  • A chamada de métodos agora inclui um cache que evita a resolução de sobrecargas, o que reduz significativamente o impacto na performance da resolução de métodos, especialmente quando a mesma sobrecarga é chamada várias vezes, como durante loops.
  • A transmissão de listas, tuplas e buffers para arrays de primitivos Java foi acelerada de 4 a 100 vezes, dependendo do tipo de dados. A conversão utiliza um processamento otimizado de buffers na memória, em vez da API Sequence. Quando um buffer Python é encontrado, apenas o primeiro elemento é verificado para conversão, pois os dados dos buffers são homogêneos.
  • O gerenciamento de operações de desligamento (implementado desde o JPype 1.0.0, mas esquecido na preparação da lista de mudanças). JPype agora chama o procedimento de desligamento da JVM, que tenta sair de maneira 'graciosa'. Isso resulta em várias mudanças no comportamento. As threads em segundo plano (chamada proxy) agora podem manter a JVM aberta até que sejam finalizadas. Chamadas Proxy lidam com o desligamento até que a chamada seja concluída, mas receberão uma mensagem de interrupção. Os arquivos agora são fechados adequadamente e os dados são gravados no disco (flush) se as threads processarem a exceção de maneira adequada. Hooks de limpeza de recursos e finalizadores são executados. Hooks AtExit são chamados na criação de threads. A conexão automática de threads ao usar a JVM a partir do Python é implementada por meio de um daemon. Códigos de erro que não conseguem lidar corretamente com a limpeza de threads provavelmente travarão durante a execução do desligamento. A documentação adicional está no guia de uso.
  • O wrapper para Throwable estava recebendo um wrapper para Object em vez do resultado esperado, o que causava conversões estranhas de classes Python.
  • Corrigidos erros de digitação no sistema de importação que levavam à exibição do erro '»jname» not found'.
  • Assegurado o tratamento correto de ‘^C’ em KeyboardInterrupt.
  • Resolvido um problema com caracteres no Python 3.5.3. PySlice_Unpack foi introduzido na versão de patch subsequente (3.5.4) e não deveria ser utilizado.
  • Corrigido um erro com numpy.linalg.inv que causava falhas. O problema foi rastreado até interações entre threads da JVM e algumas variantes do numpy. A solução recomendada é chamar numpy.linalg.inv antes de iniciar a JVM.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster