JPype 1.0.2 update, isang library para sa pag-access ng mga klase ng Java mula sa Python

Magagamit bagong release ng interlayer JPype 1.0.2, na nagpapahintulot sa mga application ng Python na magkaroon ng ganap na access sa mga library ng klase sa wikang Java. Sa JPype mula sa Python, maaari mong gamitin ang mga library na partikular sa Java upang lumikha ng mga hybrid na application na pinagsasama ang Java at Python code. Hindi tulad ng Jython, ang pagsasama sa Java ay nakakamit hindi sa pamamagitan ng paglikha ng variant ng Python para sa JVM, ngunit sa pamamagitan ng pakikipag-ugnayan sa antas ng parehong virtual machine gamit ang shared memory. Ang iminungkahing diskarte ay nagbibigay-daan hindi lamang upang makamit ang mahusay na pagganap, ngunit nagbibigay din ng access sa lahat ng CPython at Java library. Code ng proyekto ipinamahagi ni lisensyado sa ilalim ng Apache 2.0.

Pangunahing pagbabago:

  • Ang isang cache ay idinagdag sa mga tawag sa pamamaraan upang maiwasan ang paglutas ng labis na karga, na lubos na binabawasan ang epekto sa pagganap ng paglutas ng pamamaraan, lalo na kung ang parehong labis na karga ay tinatawag nang maraming beses, tulad ng sa panahon ng pagpapatupad ng loop.
  • Mula 4 hanggang 100 beses, depende sa uri ng data, ang paglipat ng mga listahan, tuple at buffer sa mga array ng Java primitives ay pinabilis. Gumagamit ang conversion ng naka-optimize na pagproseso ng mga in-memory na buffer, sa halip na ang Sequence API. Kapag may na-encounter na Python buffer, ang unang elemento lang ang susuriin para sa conversion, dahil homogenous ang mga buffer na ito.
  • Pagproseso ng mga pagpapatakbo ng shutdown (ipinatupad sa JPype 1.0.0, ngunit nilaktawan noong inihahanda ang changelog). Tinatawag na ngayon ng JPype ang JVM shutdown routine, na sumusubok na lumabas nang maganda. Ito ay humahantong sa ilang mga pagbabago sa pag-uugali. Ang mga non-background na thread (mga proxy na tawag) ay maaari na ngayong panatilihing bukas ang JVM hanggang sa matapos ang mga ito. Ipoproseso ng mga proxy na tawag ang pag-shutdown hanggang sa makumpleto ang tawag, ngunit makakatanggap sila ng isang abort na mensahe. Ang mga file ay sarado na ngayon nang maayos at na-flush sa disk kung pinangangasiwaan ng mga thread ang exception gaya ng inaasahan. Ang mga hook sa paglilinis ng mapagkukunan at mga finalizer ay isinasagawa. Kapag lumitaw ang mga thread, tinatawag ang mga AtExit hook. Sa pamamagitan ng daemon, ipinapatupad ang awtomatikong thread attachment kapag ginagamit ang JVM mula sa Python. Ang buggy code na hindi mahawakan nang maayos ang thread cleanup ay malamang na mabitin kapag isinagawa ang shutdown. Ang karagdagang dokumentasyon ay matatagpuan sa manwal ng gumagamit.
  • Ang wrapper para sa Throwable ay nakatanggap ng wrapper para sa Object sa halip na ang inaasahang resulta, na humantong sa mga kakaibang conversion mula sa mga klase ng Python.
  • Inayos ang mga typo sa sistema ng pag-import na nagresulta sa error na 'Β»jnameΒ» not found'.
  • Tiniyak na ang "^C" ay na-promote nang tama sa KeyboardInterrupt.
  • Inayos ang problema sa mga simbolo mula noong Python 3.5.3. Ang PySlice_Unpack ay ipinakilala sa isang kasunod na paglabas ng patch (3.5.4) at hindi dapat ginamit.
  • Inayos ang isang bug sa numpy.linalg.inv na humantong sa isang pag-crash. Ang isyu ay na-trace sa thread na komunikasyon sa pagitan ng JVM at ilang numpy flavors. Ang iminungkahing solusyon ay tumawag sa numpy.linalg.inv bago simulan ang JVM.

Pinagmulan: opennet.ru

Magdagdag ng komento