簡體   English   中英

在java和python之間傳遞數據

[英]passing data between java and python

如果我的問題是noob,請道歉。 我正在使用pgsql 8.4運行Django 1.2並且我需要在從用戶獲得輸入后運行Java程序,進行一些計算並將結果返回給用戶。

我可以知道在Java和Python Django之間傳遞數據的最佳方法是什么,以便上面的場景得到解決? 我聽說過Jython,但根據Django文檔,它需要擴展jython-Django,但目前它不支持django 1.2.x. 我應該使用stdout傳遞數據嗎?

感謝別人聽我說。

如果你所做的只是調用Java進行一些計算,那么subprocess是最簡單的方法,但我只是想拋出另一個選項。

JPype是一個包,它允許您在Py​​thon程序中運行JVM,同時調用Java代碼,就像它是Python一樣( 示例 )。

也就是說,它就像Jython一樣,你直接調用Java代碼,就像你正在運行CPython那樣的子進程。 考慮JPype,如果由於某種原因,Java代碼不容易從shell腳本(也就是子進程)調用,或者需要進行大量的雙向通信。

使用子進程並將Java程序作為簡單的子進程運行。 它非常非常簡單且速度相當快。

如果您需要做一些更具伸縮性的事情,您應該考慮使用Java代碼創建一個glassfish服務器,這樣您的Python就可以向Java發出Web服務請求。 這是更具可擴展性,但也更多的工作。

您還可以使用Py4J執行此任務:

from py4j.java_gateway import JavaGateway
gateway = JavaGateway()                        # connect to the JVM
gateway.jvm.java.lang.System.out.println('Hello World!')

您應該首先啟動Java程序,然后從Python調用Java方法。

py4j沒有啟動jvm,它只是連接到已經啟動的Java進程。

這可能是你想要避免的。 但是以最簡單的方式,使用帶有java的套接字/共享文件將是最好的解決方案。 python socket可以發送信息並從java修改它。 另一方面,如果感覺像是痛苦。 如果你在同一台計算機上使用java和python,你可以使用一個共享文件,java可以讀取,python可以讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM