为了账号安全,请及时绑定邮箱和手机立即绑定

在 Jython 2.5 中同时执行多个函数

在 Jython 2.5 中同时执行多个函数

慕村9548890 2023-05-10 17:01:41
我正在尝试同时运行多个 Jython 文件,以便我可以使用我的 PC 多处理器(特别是在 Hyperion 工作区的 FDM 中执行此操作)有什么办法可以做到这一点?我试过通过Java来实现,但它不识别线程函数,也通过Python尝试过,而且这个版本的Jython没有并发库,无法导入它。import osimport sysfrom java.io import *from java.util import *from java import *from java.lang import *from threading import *import java.util.logging.Level;import java.util.logging.Logger;import org.python.core.PyObject;import org.python.util.PythonInterpreter;new Thread() {     public void run() {        java.lang.Runtime.getRuntime().exec("python test1.py")    }}.start()new Thread() {     public void run() {        java.lang.Runtime.getRuntime().exec("python test2.py")    }}.start()new Thread() {     public void run() {        java.lang.Runtime.getRuntime().exec("python test3.py")    }}.start()错误:File "E:\Oracle\Middleware\EPMSystem11R1\products\FinancialDataQuality\Applications\FDMEE/data/scripts/custom/test.py", line 15    new Thread() {       ^SyntaxError: mismatched input 'Thread' expecting NEWLINE
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您不能在 Python 代码中使用 Java 语法。即使您使用 Jython 运行它。


您可以利用 Jython 将 python 函数转换为 Java 函数接口这一事实。


from java.lang import Thread, Runtime



Thread(lambda: Runtime.getRuntime().exec("python test1.py")).start()

Thread(lambda: Runtime.getRuntime().exec("python test2.py")).start()

Thread(lambda: Runtime.getRuntime().exec("python test3.py")).start()

做同样的事情的 Pythonic 方式是


import subprocess, threading


threading.Thread(target=lambda: subprocess.call(["python","test1.py"])).start()

threading.Thread(target=lambda: subprocess.call(["python","test2.py"])).start()

老实说,我会使用multiprocessing而不是threading,但我不确定 Jython 是否支持它。


查看完整回答
反对 回复 2023-05-10
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信