2017-09-11 16 views
0

私はSched(Im Windowsユーザー)などのPythonで別のスケジュールを探しています。しかし、私は実際にそれを把握することはできません。もし可能ならば。与えられた時間にスケジュールする一方、関数を実行する - Python

My own UML

我々は一度に見ることができます::00.21は、など私はプログラムが機能2をしたい時ですが、関数1は、リストIに追加されなければならない私の計画は、以下の画像のようにすることですタイマーがヒットする前に2分以内に動作するので、できるだけ多くをリストに作成しています。基本的に...

機能1は、タイマーの2分前に機能しています。それが00:21に達すると、関数1を停止し、関数2を実行します。関数2は、リストをとり、それ自身の関数でそれを使用します。

しかし、私はこれを行う方法や開始方法がわかりません。私は自分のタイマーを行うことを考えていたが、それは解決策ではないように感じる。あなたは何をお勧めしますか?

答えて

0

サブクラスがthreading.Threadのクラスを作成することで、このような問題に近づくと思います。そこから、runメソッドを実行したい機能で上書きします。この場合、リストに項目が入れられます。次に、mainに、そのスレッドを開始してからsleepを呼び出します。クラスは次のようになります。

class ListBuilder(threading.Thread): 
    def__init__(self): 
     super().__init__() 
     self._finished = False 

     self.lst = [] 

    def get_data(): 
     # This is the data retrieval function 
     # It could be imported in, defined outside the class, or made static. 

    def run(self): 
     while not self._finished: 
      self.lst.append(self.get_data()) 

    def stop(self): 
     self._finished = True 

あなたmainは、あなたがしなければならないすべては午前0時19分でそれを実行するには、Windowsタスクスケジューラを使用している、今

import time 

if __name__ == '__main__': 
    lb = ListBuilder() 
    lb.start() 

    time.sleep(120) # sleep for 120 seconds, 2 minutes 

    lb.stop() 
    time.sleep(.1) # A time buffer to make sure the final while loop finishes 
        # Depending on how long each while loop iteration takes, 
        # it may not be necessary or it may need to be longer 

    do_stuf(lb.lst) # performs actions on the resulting list 

のようになります。設定する必要があります。

+0

ありがとうございます!これは私が探していた答えでした! :) – Andres123

関連する問題