2017-10-24 4 views
0

私はすべてのn秒(APIによってサーバーから取得)の更新されたタイムスタンプを印刷しようとしている非常に単純なPythonスクリプトを持っています。サーバーから取得したタイムスタンプを更新するにはどうすればよいですか?

import FinexAPI 
import time 

とサーバーのタイムスタンプを取得するための変数を設定する:

カスタムモジュール(FinexAPI)と時間モジュールをインポートした後

ticker = FinexAPI.ticker() 
when = float(ticker['timestamp']) 

を私が実行している場合:

print when 

私はタイムスタンプを最新にしています。私がもう一度それを実行すると、私は新しい更新されたタイムスタンプを見ることができます。今までは問題は全くありません。

今度は、私は5秒ごとに「更新されたタイムスタンプの印刷」を実行する必要があるとしましょう:

def getNewTimestamp(): 
    print when 
    time.sleep(5) 

while True: 
    getNewTimestamp() 

しかし、このコードで私は、同じタイムスタンプを5秒ごとに取得しています。問題は、私がgetNewTimestamp関数の外にwhenを定義していることです。そのため、基本的に同じ非更新タイムスタンプを印刷し続けます。しかし、関数内で定義しても、タイムスタンプの更新はまだありません。

私が考えている別のことは、whileループはこのシナリオでは最良の選択ではないが、それは別の話(私は思う...)だろうということです。誰かが何が間違っているのか、5秒ごとに更新されたタイムスタンプを取得して印刷するための最良の方法は何かを把握するのに役立つことができますか?

答えて

0

あなたは、ループ内でAPIを呼び出す必要があり:

def getNewTimestamp(): 
    ticker = FinexAPI.ticker() 
    when = float(ticker['timestamp']) 
    print when 

while True: 
    getNewTimestamp() 
    time.sleep(5) 
+0

あなたは王です! それはとても簡単でした。 ありがとうございます。 私はあなたに+1をくれました – mosf

関連する問題