java - 在 Jython 2.5 中同时执行多个功能
问题描述
我正在尝试同时运行多个 Jython 文件,以便可以使用我的 PC 多处理器(特别是在 Hyperion 工作区的 FDM 中执行此操作)
有什么办法可以做到这一点吗?
我试过通过Java来做,但它不识别线程函数,也试过通过Python,这个版本的Jython没有并发库,无法导入。
import os
import sys
from 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
解决方案
您不能在 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 是否支持它。
推荐阅读
- alexa-skills-kit - 如何使用 c# 向使用 Dialog.ElicitSlot 的用户提问?
- java - Java允许运行私有方法吗?有人可以解释为什么吗?
- r - mclapply() 的性能明显比 lapply() 差。我怎样才能加快速度?
- angular - Webstorm:“必须是左值”是什么意思
- c# - C#上的二维数组
- php - Postman 的响应显示 200,但 Android 返回 403
- python - Pandas 对 DateTime 列的错误排序
- google-chrome-extension - Chrome 扩展电子邮件问题中的 Google Oauth 集成
- c# - 创建新邮件后,RibbonDropDownItems 不可见
- google-apps-script - 使用 Google Apps 脚本插入脚本文件