如何使用jython类中的Java计时器来调度其中一个类方法?
我有一个jython类,它作为线程运行。我希望它的run方法创建一个java计时器,然后调度类的一个函数:如何使用jython类中的Java计时器来调度其中一个类方法?,java,jython,python-multithreading,Java,Jython,Python Multithreading,我有一个jython类,它作为线程运行。我希望它的run方法创建一个java计时器,然后调度类的一个函数: class IBTHXHandler(threading.Thread): def __init__(self): threading.Thread.__init__(self, name='IBTHX Handler Thread') self.start() def run(self): print 'ibthx th
class IBTHXHandler(threading.Thread):
def __init__(self):
threading.Thread.__init__(self, name='IBTHX Handler Thread')
self.start()
def run(self):
print 'ibthx thread running'
timer = Timer
timer.schedule(self.getRealtimeData(), 0, 1000)
def getRealtimeData(self):
print 'Getting Realtime Data'
运行此代码时,出现以下错误:
TypeError: schedule(): 1st arg can't be coerced to java.util.TimerTask
我也试过了
timer.schedule(self.getRealtimeData, 0, 1000)
这让我
TypeError: schedule(): self arg can't be coerced to java.util.Timer
有没有比使用Java定时器更好的方法
我考虑过使用python threading.Timer类,但这给我带来了问题(我想是因为我是从另一个线程中调用它的??)
无论如何,感谢您查看此内容。代码有两个问题。第一个是您忘记了使用()after Timer来实例化它,第二个是要调度的第一个参数必须是计时器任务。下面的代码应该可以工作。希望这有帮助
import threading
from java.util import Timer, TimerTask
class MyTimerTask(TimerTask):
def run(self):
print 'Getting Realtime Data'
class IBTHXHandler(threading.Thread):
def __init__(self):
threading.Thread.__init__(self, name='IBTHX Handler Thread')
self.start()
def run(self):
print 'ibthx thread running'
timer = Timer()
timer.schedule(MyTimerTask(), 0, 1000)
IBTHXHandler()
代码有两个问题。第一个是您忘记了使用()after Timer来实例化它,第二个是要调度的第一个参数必须是计时器任务。下面的代码应该可以工作。希望这有帮助
import threading
from java.util import Timer, TimerTask
class MyTimerTask(TimerTask):
def run(self):
print 'Getting Realtime Data'
class IBTHXHandler(threading.Thread):
def __init__(self):
threading.Thread.__init__(self, name='IBTHX Handler Thread')
self.start()
def run(self):
print 'ibthx thread running'
timer = Timer()
timer.schedule(MyTimerTask(), 0, 1000)
IBTHXHandler()
谢谢你,弗兰克。那很有魅力!我想让你高兴起来,但我没有足够的名声去做!很抱歉但再次感谢,谢谢你的帮助。我还有一个问题,就是我不知道在调度TimerTask时如何将变量传递到TimerTask中。当我重写run()方法以获取变量,并将它们传递到timer.schedule方法时,我得到一个jython错误,表示run方法期望0个变量,而得到4个。我还尝试向TimerTask扩展类添加init方法,但没有成功。。。使TimerTask类成为thread类的内部类会有帮助吗,因为它可以访问thread类的变量?你能帮我吗?谢谢你,弗兰克。那很有魅力!我想让你高兴起来,但我没有足够的名声去做!很抱歉但再次感谢,谢谢你的帮助。我还有一个问题,就是我不知道在调度TimerTask时如何将变量传递到TimerTask中。当我重写run()方法以获取变量,并将它们传递到timer.schedule方法时,我得到一个jython错误,表示run方法期望0个变量,而得到4个。我还尝试向TimerTask扩展类添加init方法,但没有成功。。。使TimerTask类成为thread类的内部类会有帮助吗,因为它可以访问thread类的变量?你能帮我吗?