欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python調(diào)用Jar包的兩種方式小結(jié)

 更新時(shí)間:2022年12月08日 10:19:26   作者:Wintersee  
這篇文章主要介紹了Python調(diào)用Jar包的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

概覽

因工作場(chǎng)景,需要在python代碼里調(diào)用Jar包來(lái)實(shí)現(xiàn)一些功能,調(diào)研下來(lái)主要有兩種方式:

  • java -jar xx.jar
  • JPype

環(huán)境配置

因?yàn)橐诠緝?nèi)網(wǎng)操作,所以需要通過(guò)離線方式進(jìn)行安裝。環(huán)境用的是一個(gè)Centos7.7的docker鏡像。

安裝JDK

主要有三種方式:

  • 1. 通過(guò)yum源安裝
  • 2. rpm安裝
  • 3. 解壓JDK安裝包手動(dòng)安裝

第一種方式需要聯(lián)網(wǎng)或者配置內(nèi)網(wǎng)的yum源

第三種方式比較繁瑣且需要配置環(huán)境變量,相較而言第二種方式比較適合我這一次的場(chǎng)景

具體安裝細(xì)節(jié)不再贅述,詳情可參考這篇文章:CentOS安裝jdk的幾種方法及配置環(huán)境變量

安裝JPype(如需要)

同樣的,可以通過(guò)pip直接在線安裝,也可以通過(guò)python setup.py install或者pip install xx.whl離線安裝,可參考Python安裝包的三種方式

JPype安裝包和文檔可以通過(guò)官方github 或者官方PyPi獲取。

調(diào)用示例

java -jar

import os
import subprocess
import jpype
import time

def query_by_java_jar(jar_path, param):
? ? execute = "java -jar {} '{}'".format(jar_path, param)
? ? # print(execute)
? ? output = subprocess.Popen(execute, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
? ? res = output.stdout.readlines()
? ? return res

JPype

import os
import subprocess
import jpype
import time

def query_by_jpype(jar_path, some_param):
? ? if not jpype.isJVMStarted():
? ? ? ? jpype.startJVM(classpath=[jar_path])
? ? if not jpype.isThreadAttachedToJVM():
? ? ? ? jpype.attachThreadToJVM()
? ? try:
? ? ? ? java_class = jpype.JClass('com.xxx.xxx')
? ? ? ? result = java_class.someStaticFunction(some_param)
? ? except Exception as e:
? ? ? ? print(e)
? ? ? ? result = None
? ? finally:
? ? ? ? #jpype.shutdownJVM()
? ? ? ? return result

再多說(shuō)一點(diǎn)

關(guān)于JPype

  • 具體的使用場(chǎng)景和方法,可參考Github里的UserGuide
  • shutdown之后再start報(bào)錯(cuò):OSError: JVM cannot be restarted

這是JPype的一個(gè)使用限制,為防止內(nèi)存泄漏的,同一進(jìn)程內(nèi)關(guān)閉JVM后無(wú)法再次啟動(dòng)。

可考慮將調(diào)用方法寫(xiě)入到一個(gè)Python腳本,然后通過(guò)subprocess去調(diào)用。

官方解釋此處也在貼一下:

JPype Known limitations

Restarting the JVM

JPype caches many resources to the JVM. Those resource are still allocated after the JVM is shutdown as there are still Python objects that point to those resources. If the JVM is restarted, those stale Python objects will be in a broken state and the new JVM instance will obtain the references to these resulting in a memory leak. Thus it is not possible to start the JVM after it has been shut down with the current implementation.

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解在Python中創(chuàng)建條形圖追趕動(dòng)畫(huà)

    詳解在Python中創(chuàng)建條形圖追趕動(dòng)畫(huà)

    動(dòng)畫(huà)是使可視化更具吸引力和用戶吸引力的好方法。它幫助我們以有意義的方式展示數(shù)據(jù)可視化。Matplotlib是一個(gè)非常流行的數(shù)據(jù)可視化庫(kù),通常用于數(shù)據(jù)的圖形表示以及使用內(nèi)置函數(shù)的動(dòng)畫(huà)。本文將用Matplotlib繪制條形圖追趕動(dòng)畫(huà),需要的可以參考一下
    2022-03-03
  • pandas預(yù)處理部分地區(qū)數(shù)據(jù)案例

    pandas預(yù)處理部分地區(qū)數(shù)據(jù)案例

    本文主要介紹了pandas預(yù)處理部分地區(qū)數(shù)據(jù)案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python處理電子表格的Pandas、OpenPyXL、xlrd和xlwt庫(kù)

    Python處理電子表格的Pandas、OpenPyXL、xlrd和xlwt庫(kù)

    在Python中處理表格數(shù)據(jù),有幾個(gè)非常流行且功能強(qiáng)大的庫(kù),Pandas在數(shù)據(jù)分析方面提供了廣泛的功能,而OpenPyXL、xlrd和xlwt則在處理Excel文件方面各有所長(zhǎng),以下是一些最常用的庫(kù)及其示例代碼
    2024-01-01
  • 10分鐘學(xué)會(huì)使用python實(shí)現(xiàn)人臉識(shí)別(附源碼)

    10分鐘學(xué)會(huì)使用python實(shí)現(xiàn)人臉識(shí)別(附源碼)

    這篇文章主要介紹了10分鐘學(xué)會(huì)使用python實(shí)現(xiàn)人臉識(shí)別(附源碼),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • python函數(shù)形參用法實(shí)例分析

    python函數(shù)形參用法實(shí)例分析

    這篇文章主要介紹了python函數(shù)形參用法,較為詳細(xì)的講述了Python函數(shù)形參的功能、定義及使用技巧,需要的朋友可以參考下
    2015-08-08
  • 使用PyTorch實(shí)現(xiàn)隨機(jī)搜索策略

    使用PyTorch實(shí)現(xiàn)隨機(jī)搜索策略

    這篇文章主要介紹了使用PyTorch實(shí)現(xiàn)隨機(jī)搜索策略,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • python調(diào)用stitcher類自動(dòng)實(shí)現(xiàn)多個(gè)圖像拼接融合功能

    python調(diào)用stitcher類自動(dòng)實(shí)現(xiàn)多個(gè)圖像拼接融合功能

    這篇文章主要介紹了python調(diào)用stitcher類自動(dòng)實(shí)現(xiàn)多個(gè)圖像拼接融合功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Linux下使用python腳本執(zhí)行BCP導(dǎo)入導(dǎo)出方式

    Linux下使用python腳本執(zhí)行BCP導(dǎo)入導(dǎo)出方式

    這篇文章主要介紹了Linux下使用python腳本執(zhí)行BCP導(dǎo)入導(dǎo)出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 創(chuàng)建Python Docker鏡像的詳細(xì)步驟

    創(chuàng)建Python Docker鏡像的詳細(xì)步驟

    Python和Docker是兩個(gè)極其流行的技術(shù),結(jié)合它們可以創(chuàng)建強(qiáng)大的應(yīng)用程序,Docker允許將應(yīng)用程序及其依賴項(xiàng)打包到一個(gè)獨(dú)立的容器中,而Python則提供了豐富的庫(kù)和工具來(lái)開(kāi)發(fā)應(yīng)用程序,本文將提供如何創(chuàng)建Python Docker鏡像的全面指南,,需要的朋友可以參考下
    2023-12-12
  • 手把手教你pip配置國(guó)內(nèi)鏡像源(最新詳盡版)

    手把手教你pip配置國(guó)內(nèi)鏡像源(最新詳盡版)

    pip是一個(gè)現(xiàn)代的,通用的Python包管理工具,提供了對(duì)Python包的查找、下載、安裝、卸載的功能,下面這篇文章主要給大家介紹了關(guān)于pip配置國(guó)內(nèi)鏡像源的相關(guān)資料,需要的朋友可以參考下
    2023-02-02

最新評(píng)論