Java 調用 Python 方法學習筆記---之---java調用python深度學習模型運算并返回運算結果給前端(2)

上一章寫到Java 調用 Python 方法學習的三種方法,這里強調第三種方法。第三種方法本質上和第二種方法是一樣的,都是應用到

Runtime.getRuntime().exec()?去執行文件。要深度理解這種方法,首先要先理解一下Runtime.getRuntime().exec() 。

Runtime.getRuntime().exec():

Runtime.getRuntime().exec()方法主要用于執行外部的程序或命令。

Runtime.getRuntime().exec共有六個重載方法:

public Process exec(String command)
//在單獨的進程中執行指定的字符串命令。
public Process exec(String [] cmdArray)
//在單獨的進程中執行指定命令和變量
public Process exec(String command, String [] envp)
//在指定環境的獨立進程中執行指定命令和變量
public Process exec(String [] cmdArray, String [] envp)
//在指定環境的獨立進程中執行指定的命令和變量
public Process exec(String command,String[] envp,File dir)
//在有指定環境和工作目錄的獨立進程中執行指定的字符串命令
public Process exec(String[] cmdarray,String[] envp,File dir)
//在指定環境和工作目錄的獨立進程中執行指定的命令和變量

參數說明

cmdarray?- 包含所調用命令及其參數的數組。

envp?- 字符串數組,其中每個元素的環境變量的設置格式為?name=value,如果子進程應該繼承當前進程的環境,或該參數為 null。

dir?- 子進程的工作目錄;如果子進程應該繼承當前進程的工作目錄,則該參數為 null。(以上來源鏈接)

關于Runtime.getRuntime().exec()的具體用法就不做贅述,各大blog或者論壇以及官方文檔中都有詳細介紹,具體要理解一下Runtime.getRuntime().exec()的工作原理,方便使用以及調試。

Runtime.getRuntime().exec()的工作原理:

Runtime.getRuntime().exec()就是調用服務器命令腳本來執行指定命令,所以它的執行是基于使用者電腦本身(因此在調用有第三方庫的程序時要確保電腦本身已經具有這些第三方環境)。其執行過程有點類似系統的命令行操作,所以在調試過程中可以先利用命令行操作進行參數調試,然后在確定執行命令的書寫(主要是個人喜歡這中調試方式,而且在用Runtime.getRuntime().exec()執行python文件時,有時候python中有錯卻不會在java中傳遞相應的錯誤信息)

這里因為我電腦中有多個版本的python,所以指定python36。在系統命令操作中調試成功,確保被調用的文件沒有問題再在java中調用
?

String[] args = new String[] { "python36", "D://demo2.py", parameters};
Process proc = Runtime.getRuntime().exec(args);

準備:

1.基于python的深度學習模型

2.基于java的Springboot項目


?

?首先前端頁面中通過ajax請求調用后端的相應函數并完成指定操作:

htmlobj = $.ajax({url: "/目標類/目標方法?指定參數,async: false});

接著在action中寫相應的響應操作

@RestController
@RequestMapping("/目標類")
public class BikeAction {//獲取診斷信息@RequestMapping("/目標方法")@ResponseBodypublic ResResponseBody getDiagnoseInfoList(BikeInfoV bikeInfoV) {函數體內容}
}

函數體內容

//從數據庫中獲取數據并用實體類封裝
ArrayList<diagnoseInfo> diagnoseInfolist = bikeService.getDiagnoseInfoList(bikeInfoV);
//定義responseBody類為了以json封裝返回結果病返回給前端
ResResponseBody responseBody = new ResResponseBody();//將實體類轉換為json類,為了方便轉化為string類并以參數傳到python文件中
ObjectMapper om = new ObjectMapper();
try {str = om.writeValueAsString(diagnoseInfolist);//將實體類轉換為json類
} catch (JsonProcessingException e) {e.printStackTrace();
}//利用Runtime.getRuntime().exec調用python文件,注意eclipse中的文件目錄是以項目目錄為根目錄的,所以在調用的時候可以使用絕對路徑,也可以利用相對路徑
try {String[] args = new String[] { "python36","src\\python\\SAE\\demo2.py", str };Process proc = Runtime.getRuntime().exec(args);// 執行py文件//遠離同cmd執行一樣BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(),"gb2312"));while ((line = in.readLine()) != null) {responseBody.setLine(line);}in.close();proc.waitFor();
} catch (IOException e) {e.printStackTrace();
} catch (InterruptedException e) {e.printStackTrace();
} //返回信息給前端
return responseBody;

利用Runtime.getRuntime().exec調用python文件,注意eclipse中的文件目錄是以項目目錄為根目錄的,所以在調用的時候可以使用絕對路徑,也可以利用相對路徑具體見路徑

在python文件中

import sys? ?用以調用外部參數???????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540109.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tbslog亂碼轉換_日文游戲亂碼怎么辦 亂碼轉換工具LocaleEmulator

by Nicho Feb.23,2017許多日文游戲有諸多地區限制&#xff0c;在 win7、win8、win10 上玩時候會經常遇到日文游戲亂碼的情況&#xff0c;這時候就得用到亂碼轉換工具了&#xff0c;下面我們就來詳細說明下使用方法。常用的有 microsoft locale、applocale、NTLEA 等&…

haarcascades---各種分類器xml文件下載地址

安裝好opencv想找個人臉識別的小實驗做做&#xff0c;后來發現沒有配置文件&#xff0c;于是乎就找到了這個&#xff0c;所以就轉載過來了。 下載地址&#xff1a;https://github.com/opencv/opencv/tree/master/data/haarcascades 轉載地址&#xff1a;https://blog.csdn.ne…

vue 組件屬性監聽_vuejs組件內的對象屬性監聽問題

跟數據類型是有關的。當你把一個普通的 JavaScript 對象傳給 Vue 實例的 data 選項&#xff0c;Vue 將遍歷此對象所有的屬性&#xff0c;并使用 Object.defineProperty 把這些屬性全部轉為 getter/setter。但是不是所有的變動都可以通過set/get捕捉到&#xff0c;比如一個數組l…

Part 2: Containers

要求 安裝了1.13或者更高版本的Docker閱讀了Part1中的定位&#xff08;我沒寫&#xff09;介紹 是時候用Docker構建一個app了。我們會從構建這樣一個app的最底層開始&#xff0c;容器——我們這節所介紹的內容。在這層之上是服務&#xff0c;服務定義了容器們的在生產中的行為&…

(論文)WS-DAN (弱監督數據增強)

背景 近期在做外賣分類的項目&#xff0c;外賣分類屬于細粒度圖像分類&#xff0c;在分類的過程中要從圖片的行人中和非機動車中區分出各類外賣&#xff08;主要是美團、餓了嗎&#xff09;。剛好近期發現了一片關于細粒度圖像分類較新的論文&#xff08;See Better Before Lo…

羅馬音平假名片假名轉換器_關于五十音你所要知道的一切!文末附日網高清字帖...

今天開始&#xff0c;木子小花日本語教室將開始同時更新日語文法系列文章 和 日語真題詳解系列文章&#xff0c;從五十音圖的記憶方法到日語助詞的用法整理&#xff0c;從N5的簡單句子構成到N1復雜文法的接續記憶方法&#xff0c;力求做出全知乎&#xff08;小聲&#xff1a;全…

django的web開發筆記1(智能診斷系統數據概覽記錄)

接于上一篇&#xff0c;這一篇主要記錄如何鏈接mysql數據庫以及從數據庫中調用數據信息到頁面&#xff0c;同時包含百度地圖api的一些使用。 其中包括模塊&#xff0c;echert圖表繪制數據調用&#xff0c;百度地圖數據信息調用以及一些單機效果&#xff0c;頁面數據調用等。 1…

Spring中應用反射機制淺析

我們知道,Spring中大量使用了反射機制&#xff0c;那么究竟是什么地方使用了呢&#xff1f;就從源頭說起吧。 一 反射源頭Class類 對類的概念我們已經非常熟悉了。比如可以有Student這個類&#xff0c;Person這個類。但是我們要知道&#xff0c;有一個叫Class的類&#xff0c;…

ios nslog 例子_iOS開發-使用宏自定義輸出(NSLog)

前言&#xff1a;1)輸出日志是會大量損耗系統性能2)輸出的信息很容易會被截取到&#xff0c;導致信息不安全。所以我們會在發行版(Release)取消所有的Log。如果一行一行地去注釋掉Log&#xff0c;顯然不是一個明確的選擇。因此我們可以使用宏去自定義Log輸出。最簡單的一個例子…

python小技巧積累--題庫(持續更新)

介紹 作為一名程序員&#xff0c;除了需要具備解決問題的思路以外&#xff0c;代碼的質量和簡潔性也很關鍵。 python內置庫中就有很多簡潔而又優雅的操作&#xff0c;這里的知識都來源于網絡積累&#xff0c; 閑暇時整理下來方便溫故。目錄 >選擇正確的內置功能 使用enum…

提高SQL執行性能方案:如何讓你的SQL運行得更快

---- 人們在使用SQL時往往會陷入一個誤區&#xff0c;即太關注于所得的結果是否正確&#xff0c;而忽略了不同的實現方法之間可能存在的性能差異&#xff0c;這種性能差異在大型的或是復雜的數據庫環境中&#xff08;如聯機事務處理OLTP或決策支持系統DSS&#xff09;中表現得尤…

休眠后gpio狀態_STM32中GPIO的8種工作模式總結

STM32中GPIO的8種工作模式總結一、推挽輸出&#xff1a;可以輸出高、低電平&#xff0c;連接數字器件;推挽結構一般是指兩個三極管分別受兩個互補信號的控制&#xff0c;總是在一個三極管導通的時候另一個截止。高低電平由IC的電源決定。形象點解釋&#xff1a;推挽&#xff0c…

Ubuntu16.04 下 tensorRT安裝

環境準備 主要是根據工程環境需要&#xff0c;參考trt文檔安裝trt 1.查看trt適配情況 &#xff1a;鏈接跳轉&#xff0c;注意&#xff0c;不同版本的trt有不同版本的文檔&#xff0c;請以最新文檔為準。 2.根據自己系統情況下載相關包 因為我自己拉的docker鏡像是ubuntu16.04…

左右xcode的重構選項的一些理解

Rename(重命名):對標示符進行重命名,以獲得更好的代碼可讀性,這些標示符包含類,方法或者函數的名稱. Extract(抽取):將你在XCode種選擇的代碼抽取到一個新的方法或函數中. Create SuperClass(創建父類):為Xcode中當前所選的類定義父類 Move Up(上移):將所選擇的方法,屬性,或實例…

window 如何查看tomcat 實時日志_如何處理生產環境Tomcat的catalina.out日志?

前語&#xff1a;不要為了讀文章而讀文章&#xff0c;一定要帶著問題來讀文章&#xff0c;勤思考。作者&#xff1a;jmcui 來源&#xff1a;http://1t.click/x4q# 前言隨著每天業務的增長&#xff0c;Tomcat 的catalina.out日志 變得越來越大&#xff0c;占用磁盤空間不說。要…

zabbix的agent端的主動模式關鍵三個參數

如多主機超過300和隊列內容過多,就采用主動模式. [rootweb03 zabbix]# egrep -v "^#|^$" zabbix_agentd.conf PidFile/var/run/zabbix/zabbix_agentd.pid LogFile/var/log/zabbix/zabbix_agentd.log LogFileSize0 StartAgents0 ServerActive172.16.1.8 Hostnameweb03…

opencv 繪制坐標曲線_OpenCV手工實現灰度及RGB直方圖

#include #include#include#include#include#include#include#include#includeusing namespacecv;using namespacestd;//單通道圖片直方圖繪制void drawHist(vectornums){Mat hist Mat::zeros(600, 800, CV_8UC3);auto Max max_element(nums.begin(), nums.end());//max迭代器類…

onnx 測試_用于ONNX的TensorRT后端

用于ONNX的TensorRT后端解析ONNX模型以使用TensorRT執行。另請參閱TensorRT文檔。有關最近更改的列表&#xff0c;請參見changelog。支持的TensorRT版本Master分支上的開發適用于具有完整維度和動態架構shape支持的TensorRT 7.2.1的最新版本。對于TensorRT的早期版本&#xff0…

paddlepaddle測試安裝_百度paddlepaddle深度學習7日入門-CV疫情特輯心得

正值疫情嚴重之日&#xff0c;作為一名研究生被迫待在家里學習&#xff0c;手頭的科研項目也嚴重受挫。。。偶然間&#xff0c;看到微信公眾號發布這門課&#xff0c;馬上報名&#xff0c;入坑&#xff01;&#xff01;&#xff01;瞬間疫情其間有學習的目標了。。該課程學習依…

apache目錄 vscode_VsCode搭建Java開發環境(Spring Boot項目創建、運行、調試)

VsCode搭建Java開發環境(Spring Boot項目創建、運行、調試)安裝如下兩個主要擴展即可&#xff0c;這兩個擴展已關聯java項目開發主要使用的maven、springboot等所需要的擴展。開始步驟&#xff1a;在 Visual Studio Code 中打開擴展視圖(CtrlShiftX)。輸入“java”搜索商店擴展…