1

スレッドとして実行されるjythonクラスがあります。runメソッドでJavaタイマーを作成し、クラスの関数の1つをスケジュールする必要があります。

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クラスの使用を検討しましたが、問題が発生しました(別のスレッド内から呼び出していたためだと思いますか??)

とにかく、これを見てくれてありがとう。

4

1 に答える 1

1

コードには2つの問題があります。1つ目は、タイマーの後に()を忘れてインスタンス化したことです。2つ目は、スケジュールする最初の引数がタイマータスクである必要があることです。次のコードが機能するはずです。お役に立てれば!

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()
于 2012-12-19T21:32:31.080 に答える