JPype 1.0.2 шинэчлэлт, Python-оос Java ангиудад хандах сангууд

Боломжтой шинэ давхаргын хувилбар JPype 1.0.2, энэ нь Python програмуудыг Java ангиллын номын санд бүрэн нэвтрэх боломжийг зохион байгуулах боломжийг олгодог. Python-ийн JPype-ийн тусламжтайгаар та Java-д зориулсан номын сангуудыг ашиглан Java болон Python кодыг хослуулсан эрлийз програмуудыг үүсгэж болно. Jython-ээс ялгаатай нь Java-тэй интеграцчилал нь JVM-д зориулсан Python хувилбарыг бий болгосноор бус, харин хуваалцсан санах ойг ашиглан виртуал машинуудын түвшинд харилцан үйлчлэлцэх замаар хийгддэг. Санал болгож буй арга нь зөвхөн сайн гүйцэтгэлд хүрэх боломжийг олгодог төдийгүй бүх CPython болон Java номын санд хандах боломжийг олгодог. Төслийн код тараасан Apache 2.0 дагуу лицензтэй.

Үндсэн өөрчлөлтүүд:

  • Хэт ачааллын нарийвчлалаас зайлсхийхийн тулд аргын дуудлагуудад кэш нэмсэн нь аргын нарийвчлалын гүйцэтгэлд үзүүлэх нөлөөллийг эрс багасгасан, ялангуяа давталтын адил хэт ачааллыг олон удаа дуудсан тохиолдолд.
  • Өгөгдлийн төрлөөс хамааран 4-өөс 100 дахин хүртэл жагсаалт, залгуур, буферийг Java командуудын массив руу шилжүүлэх нь хурдасдаг. Энэхүү хувиргалт нь Sequence API-ийн оронд санах ойн буферийн оновчтой зохицуулалтыг ашигладаг. Python буфертэй тулгарах үед эдгээр буфер нь нэгэн төрлийн байдаг тул зөвхөн эхний элементийг хөрвүүлэх эсэхийг шалгана.
  • Унтраах үйлдлүүдийг зохицуулах (JPype 1.0.0-д хэрэгжсэн боловч өөрчлөлтийн бүртгэлийг бэлтгэх үед алгассан). JPype одоо JVM-ийн унтрах процедурыг дуудаж байгаа бөгөөд энэ нь эелдэг байдлаар гарахыг оролддог. Үүний үр дүнд зан үйлийн хэд хэдэн өөрчлөлт гарч ирдэг. Арын бус урсгалууд (прокси дуудлага) одоо JVM-г дуусгах хүртэл нээлттэй байлгах боломжтой. Прокси дуудлагууд нь дуудлага дуустал унтрах боловч цуцлах мессеж хүлээн авах болно. Файлууд одоо зөв хаагдаж, хэрэв хэлхээнүүд үл хамаарах зүйлийг зөв зохицуулбал диск рүү цэвэрлэгддэг. Нөөц цэвэрлэх дэгээ болон эцсийн боловсруулагчийг гүйцэтгэв. Threads үүсэх үед 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 руу залгах явдал юм.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх