3

15秒ごとにインターネットから値を更新する必要があるwxPythonアプリを作成しています。プログラムを中断することなく、値を設定し、この間隔でバックグラウンドで実行する機能を使用できる方法はありますか?

編集:これが私が試していることです:

import thread

class UpdateThread(Thread):
    def __init__(self):
        self.stopped = False
        UpdateThread.__init__(self)
    def run(self):
        while not self.stopped:
            downloadValue()
            time.sleep(15)
def downloadValue():
    print x

UpdateThread.__init__()
4

3 に答える 3

2

必要なのは、指定されたペースでタスクを実行するスレッドを追加することです。

あなたはここでこの素晴らしい答えを見るかもしれません:https ://stackoverflow.com/a/12435256/667433これを達成するのを手伝ってください。

編集:これがあなたのために働くはずのコードです:

import time
from threading import Thread # This is the right package name

class UpdateThread(Thread):
    def __init__(self):
        self.stopped = False
        Thread.__init__(self) # Call the super construcor (Thread's one)
    def run(self):
        while not self.stopped:
            self.downloadValue()
            time.sleep(15)
    def downloadValue(self):
        print "Hello"

myThread = UpdateThread()
myThread.start()

for i in range(10):
    print "MainThread"
    time.sleep(2)

それが役に立てば幸い

于 2013-03-05T13:47:19.473 に答える
0

私はこれに似たものを作りました:

-バックグラウンドで実行するスレッドが必要です。

-そして、「カスタム」イベントを定義して、必要に応じてトレッドが UI に通知できるようにします

カスタム WX イベントを作成する

(MyEVENT_CHECKSERVER, EVT_MYEVENT_CHECKSERVER) = wx.lib.newevent.NewEvent()

UI「init」では、イベントをバインドしてスレッドを開始できます

    #  bind the custom event 
    self.Bind(EVT_MYEVENT_CHECKSERVER, self.foo)
    # and start the worker thread
    checkServerThread = threading.Thread(target=worker_checkServerStatus
                                        ,args=(self,) )
    checkServerThread.daemon = True
    checkServerThread.start()

ワーカー スレッドは次のようになります。呼び出し元は UI インスタンスです

def worker_checkServerStatus(発信者):

   while True:    
       # check the internet code here
       evt = MyEVENT_CHECKSERVER(status='Some internet Status' ) #make a new event
       wx.PostEvent(caller, evt) # send the event to the UI
       time.sleep(15) #ZZZzz for a bit

編集:質問を読み逃す...

于 2013-03-05T14:16:55.960 に答える