亚洲精品国产精品乱码视色,下载应用成人电影AVapp,成人影院下载视频

      <track id="gfhue"><i id="gfhue"></i></track><input id="gfhue"></input>

      1. 更多精彩內(nèi)容,歡迎關(guān)注:

        視頻號
        視頻號

        抖音
        抖音

        快手
        快手

        微博
        微博

        java調(diào)python

        文檔

        java調(diào)python

        java調(diào)python主要有兩種方法:1、使用Runtime.getRuntime()執(zhí)行腳本文件;2、將python腳本寫成進程為java提供服務(wù)。
        推薦度:
        導(dǎo)讀java調(diào)python主要有兩種方法:1、使用Runtime.getRuntime()執(zhí)行腳本文件;2、將python腳本寫成進程為java提供服務(wù)。

        很多朋友都想知道java怎么調(diào)python?下面就一起來了解一下吧~

        java調(diào)python主要有兩種方法:1.使用Runtime.getRuntime()執(zhí)行腳本文件;2. 將python腳本寫成進程為java提供服務(wù),下面是具體的方法介紹:

        第一種:使用Runtime.getRuntime()執(zhí)行腳本文件

        先建立python腳本文件 demo.py

        import?numpy?as?np
        
        a?=?np.arange(12).reshape(3,4)print(a)

        java調(diào)用python程序并輸出該結(jié)果

        import?java.io.BufferedReader;import?java.io.IOException;import?java.io.InputStreamReader;public?class?Demo?{
        
        ????public?static?void?main(String[]?args)?{
        ????????//?TODO?Auto-generated?method?stub
        ????????Process?proc;
        ????????try?{
        ????????????proc?=?Runtime.getRuntime().exec("python?D:\\demo.py");//?執(zhí)行py文件
        ????????????//用輸入輸出流來截取結(jié)果
        ????????????BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(proc.getInputStream()));
        ????????????String?line?=?null;
        ????????????while?((line?=?in.readLine())?!=?null)?{
        ????????????????System.out.println(line);
        ????????????}
        ????????????in.close();
        ????????????proc.waitFor();
        ????????}?catch?(IOException?e)?{
        ????????????e.printStackTrace();
        ????????}?catch?(InterruptedException?e)?{
        ????????????e.printStackTrace();
        ????????}?
        ????}}

        如若向python程序中函數(shù)傳遞參數(shù)并執(zhí)行出結(jié)果,下面就舉一例來說明一下。同樣建立python腳本文件demo2.py

        import?sys
        
        def?func(a,b):
        ????return?(a+b)if?__name__?==?'__main__':
        ????a?=?[]
        ????for?i?in?range(1,?len(sys.argv)):
        ????????a.append((int(sys.argv[i])))
        
        ????print(func(a[0],a[1]))

        其中sys.argv用于獲取參數(shù)url1,url2等。而sys.argv[0]代表python程序名,所以列表從1開始讀取參數(shù)。以上代碼實現(xiàn)一個兩個數(shù)做加法的程序,下面看看在java中怎么傳遞函數(shù)參數(shù),代碼如下:

        int?a?=?18;int?b?=?23;try?{
        ????String[]?args?=?new?String[]?{?"python",?"D:\\demo2.py",?String.valueOf(a),?String.valueOf(b)?};
        ????Process?proc?=?Runtime.getRuntime().exec(args);//?執(zhí)行py文件
        
        ????BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(proc.getInputStream()));
        ????String?line?=?null;
        ????while?((line?=?in.readLine())?!=?null)?{
        ????????System.out.println(line);
        ????}
        ????in.close();
        ????proc.waitFor();}?catch?(IOException?e)?{
        ????e.printStackTrace();}?catch?(InterruptedException?e)?{
        ????e.printStackTrace();}

        其中args是String[] { “python”,path,url1,url2 }; ,path是python程序所在的路徑,url1是參數(shù)1,url2是參數(shù)2,以此類推。

        2. 將python腳本寫成進程為java提供服務(wù)

        python腳本文件如下:

        import?socketimport?sysimport?threadingimport?numpy?as?npfrom?PIL?import?Imagedef?main():
        ????#?創(chuàng)建服務(wù)器套接字
        ????serversocket?=?socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        ????#?獲取本地主機名稱
        ????host?=?socket.gethostname()
        ????#?設(shè)置一個端口
        ????port?=?12345
        ????#?將套接字與本地主機和端口綁定
        ????serversocket.bind((host,port))
        ????#?設(shè)置監(jiān)聽最大連接數(shù)
        ????serversocket.listen(5)
        ????#?獲取本地服務(wù)器的連接信息
        ????myaddr?=?serversocket.getsockname()
        ????print("服務(wù)器地址:%s"%str(myaddr))
        ????#?循環(huán)等待接受客戶端信息
        ????while?True:
        ????????#?獲取一個客戶端連接
        ????????clientsocket,addr?=?serversocket.accept()
        ????????print("連接地址:%s"?%?str(addr))
        ????????try:
        ????????????t?=?ServerThreading(clientsocket)#為每一個請求開啟一個處理線程
        ????????????t.start()
        ????????????pass
        ????????except?Exception?as?identifier:
        ????????????print(identifier)
        ????????????pass
        ????????pass
        ????serversocket.close()
        ????passclass?ServerThreading(threading.Thread):
        ????#?words?=?text2vec.load_lexicon()
        ????def?__init__(self,clientsocket,recvsize=1024*1024,encoding="utf-8"):
        ????????threading.Thread.__init__(self)
        ????????self._socket?=?clientsocket
        ????????self._recvsize?=?recvsize
        ????????self._encoding?=?encoding????????pass
        
        ????def?run(self):
        ????????print("開啟線程.....")
        ????????try:
        ????????????#接受數(shù)據(jù)
        ????????????msg?=?''
        ????????????while?True:
        ????????????????#?讀取recvsize個字節(jié)
        ????????????????rec?=?self._socket.recv(self._recvsize)
        ????????????????#?解碼
        ????????????????msg?+=?rec.decode(self._encoding)
        ????????????????#?文本接受是否完畢,因為python?socket不能自己判斷接收數(shù)據(jù)是否完畢,
        ????????????????#?所以需要自定義協(xié)議標志數(shù)據(jù)接受完畢
        ????????????????if?msg.strip().endswith('over'):
        ????????????????????msg=msg[:-4]
        ????????????????????break
        ???????????
        ????????????sendmsg?=?Image.open(msg)
        ????????????#?發(fā)送數(shù)據(jù)
        ????????????self._socket.send(("%s"%sendmsg).encode(self._encoding))
        ????????????pass
        ????????except?Exception?as?identifier:
        ????????????self._socket.send("500".encode(self._encoding))
        ????????????print(identifier)
        ????????????pass
        ????????finally:
        ????????????self._socket.close()?
        ????????print("任務(wù)結(jié)束.....")
        ????????
        ????????pass
        
        ????def?__del__(self):
        ????????passif?__name__?==?"__main__":
        ????main()

        在java代碼中訪問python進程的代碼:

        package?hello;import?java.lang.System;import?java.io.BufferedReader;import?java.io.IOException;import?java.io.InputStreamReader;import?java.net.InetAddress;import?java.net.Socket;import?java.io.OutputStream;import?java.io.PrintStream;import?java.io.InputStream;public?class?hello?{
        ????public?static?void?main(String[]?args){
        ????????//System.out.println("Hello?World!");
        ????????//?TODO?Auto-generated?method?stub
        
        ????????try?{
        ????????????InetAddress?addr?=?InetAddress.getLocalHost();
        ????????????String?host=addr.getHostName();
        ????????????//String?ip=addr.getHostAddress().toString();?//獲取本機ip
        ????????????//log.info("調(diào)用遠程接口:host=>"+ip+",port=>"+12345);
        
        ????????????//?初始化套接字,設(shè)置訪問服務(wù)的主機和進程端口號,HOST是訪問python進程的主機名稱,可以是IP地址或者域名,PORT是python進程綁定的端口號
        ????????????Socket?socket?=?new?Socket(host,12345);
        
        ????????????//?獲取輸出流對象
        ????????????OutputStream?os?=?socket.getOutputStream();
        ????????????PrintStream?out?=?new?PrintStream(os);
        ????????????//?發(fā)送內(nèi)容
        ????????????out.print(?"F:\\xxx\\0000.jpg");
        ????????????//?告訴服務(wù)進程,內(nèi)容發(fā)送完畢,可以開始處理
        ????????????out.print("over");
        
        ????????????//?獲取服務(wù)進程的輸入流
        ????????????InputStream?is?=?socket.getInputStream();
        ????????????BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(is,"utf-8"));
        ????????????String?tmp?=?null;
        ????????????StringBuilder?sb?=?new?StringBuilder();
        ????????????//?讀取內(nèi)容
        ????????????while((tmp=br.readLine())!=null)
        ????????????????sb.append(tmp).append('\n');
        ????????????System.out.print(sb);
        ????????????//?解析結(jié)果
        ????????????//JSONArray?res?=?JSON.parseArray(sb.toString());
        ????????}?catch?(IOException?e)?{
        ????????????e.printStackTrace();
        ????????}finally?{
        ????????????try?{if(socket!=null)?socket.close();}?catch?(IOException?e)?{}
        ????????????System.out.print("遠程接口調(diào)用結(jié)束.");
        ????????}
        ??????}}

        以上就是小編今天的分享,希望可以幫到大家。

        文檔

        java調(diào)python

        java調(diào)python主要有兩種方法:1、使用Runtime.getRuntime()執(zhí)行腳本文件;2、將python腳本寫成進程為java提供服務(wù)。
        推薦度:
        為你推薦
        資訊專欄
        熱門視頻
        相關(guān)推薦
        java decode java decodeuri java delegate java調(diào)用c++接口 java調(diào)用c++ java獲取絕對值 java delete java調(diào)用asmx接口 java dependency java dev java fastdfs java development java dict java fastjson java feign java divide java field java field獲取值 java dockerfile java file.exists() java decaf java讀取本地excel java讀取json java dataset java規(guī)則引擎 java dataframe java表單校驗 java獲得當前路徑 java dashboard java獲取隨機數(shù) java daemon java獲取隨機字符串 java ctp java獲取運行時間 java cssbox java獲取路徑 java獲取請求域名 java csrf java獲取視頻時長 java crontab
        Top