JPype 1.0.2 yeniləməsi, Python-dan Java dərslərinə daxil olmaq üçün kitabxana

Mövcuddur interlayerin yeni buraxılışı JPype 1.0.2, bu sizə Python proqramlarının Java sinif kitabxanalarına tam çıxışını təşkil etməyə imkan verir. Python-dan JPype ilə siz Java və Python kodunu birləşdirən hibrid proqramlar yaratmaq üçün Java-xüsusi kitabxanalardan istifadə edə bilərsiniz. Jython-dan fərqli olaraq, Java ilə inteqrasiya JVM üçün Python variantının yaradılması ilə deyil, ortaq yaddaşdan istifadə edərək hər iki virtual maşın səviyyəsində qarşılıqlı əlaqə vasitəsilə əldə edilir. Təklif olunan yanaşma yalnız yaxşı performans əldə etməyə imkan vermir, həm də bütün CPython və Java kitabxanalarına çıxışı təmin edir. Layihə kodu yayılır Apache 2.0 altında lisenziyalıdır.

Əsas dəyişikliklər:

  • Həddindən artıq yükləmə həllinin qarşısını almaq üçün metod çağırışlarına keş əlavə edilmişdir ki, bu da metod həllinin performans təsirini əhəmiyyətli dərəcədə azaldır, xüsusən də dövrə icrası zamanı eyni həddən artıq yükləmə dəfələrlə çağırılırsa.
  • Verilənlərin növündən asılı olaraq 4 dəfədən 100 dəfəyə qədər siyahıların, kortejlərin və buferlərin Java primitivlərinin massivlərinə ötürülməsi sürətlənir. Dönüşüm Sequence API əvəzinə yaddaşdaxili buferlərin optimallaşdırılmış işlənməsindən istifadə edir. Python buferi ilə qarşılaşdıqda, yalnız birinci element çevrilmə üçün yoxlanılır, çünki bu buferlər homojendir.
  • Emal bağlama əməliyyatları (JPype 1.0.0-da həyata keçirilir, lakin dəyişiklik jurnalını hazırlayarkən atlanır). JPype indi zərif şəkildə çıxmağa çalışan JVM-in bağlanması rejimini çağırır. Bu, davranışda bir sıra dəyişikliklərə səbəb olur. Arxa fonda olmayan mövzular (proksi zənglər) indi JVM-i bitənə qədər açıq saxlaya bilər. Proksi zəngləri zəng tamamlanana qədər bağlanma prosesini həyata keçirəcək, lakin dayandırma mesajı alacaq. Mövzular istisnanı gözlənildiyi kimi idarə edərsə, fayllar indi düzgün bağlanır və diskə silinir. Resurs təmizləmə qarmaqları və yekunlaşdırıcılar icra olunur. İplər yarandıqda, AtExit qarmaqları çağırılır. Demon vasitəsilə, Python-dan JVM-dən istifadə edərkən avtomatik ip əlavəsi həyata keçirilir. Mövzunun təmizlənməsini düzgün idarə edə bilməyən buggy kodu, bağlanma icra edildikdə, çox güman ki, asılacaq. Əlavə sənədləri istifadəçi təlimatında tapa bilərsiniz.
  • Throwable üçün sarğı gözlənilən nəticə əvəzinə Obyekt üçün sarğı aldı, bu da Python siniflərindən qəribə çevrilmələrə səbəb oldu.
  • İdxal sistemində '»jname» tapılmadı' xətası ilə nəticələnən səhvlər düzəldildi.
  • KeyboardInterrupt-da "^C"-nin düzgün irəlilədiyinə əmin olun.
  • Python 3.5.3-dən bəri simvollarla bağlı problem düzəldildi. PySlice_Unpack sonrakı yamaq buraxılışında (3.5.4) təqdim edildi və istifadə edilməməli idi.
  • Numpy.linalg.inv ilə qəzaya səbəb olan səhv düzəldildi. Problem JVM və bəzi ləzzətli ləzzətlər arasındakı əlaqə ilə izlənildi. Təklif olunan həll JVM-ə başlamazdan əvvəl numpy.linalg.inv-ə zəng etməkdir.

Mənbə: opennet.ru

Добавить комментарий