2017-01-14 17 views
2

python 2.7を特定の時刻に印刷することは可能ですか?たとえば、15時06分にプログラムを実行し、15時07分に「今すぐ実行する」というコードを記述した場合、それを印刷します。だから、今度は15:07になったときにプログラムを実行しても、「今すぐ実行する」と表示されます。また、毎週この時間に印刷することは可能ですか?今日の特定の時刻に何かを印刷する方法

+0

はいpythonでこれを行うことができます。 –

+0

@StephenRauchありがとうございますが、どうすればこれをコード化できますか? – Ryan

+0

datetimeモジュールの調査をお勧めします。 https://docs.python.org/3/library/datetime.html –

答えて

1

何かをスケジュールするのにPythonは理想的ではありませんが、そこには優れたツールがあります。午前11時のscheduled_time

プリント:

import datetime as dt 
scheduled_time = dt.time(11,00,00,0) 
while 1==1: 
    if (scheduled_time < dt.datetime.now().time() and 
     scheduled_time > (dt.datetime.now()- dt.timedelta(seconds=59)).time()): 
     print "Now is the time to print" 
     break 

は、2つのif conditionsをありますけれども、これはパイソン以下で行われることが望まれている場合は、それを実装する方法はあります1分以内に印刷する意向。短い期間を選択することができる。しかしbreakの直後のprintは、printが1回だけ実行されることを保証します。

コードを数日にわたって実行するには、これを外挿する必要があります。

を参照してください、datetime Documentation

+0

これは 'break'まで100%CPUでスレッドを実行しませんか? –

1

あなたがcronを使用していない場合は、その後、一般的な解決策は、あなたが発生するイベントを必要とするまでの残り時間を見つけることですその期間中のプログラムの睡眠を持っているし、実行を継続します。

トリッキーな部分は、プログラムに与えられた時間の次の出現を見出させることです。これにはいくつかのモジュールがありますが、固定の時間帯である明確に定義されたケースについては、単純なコードで行うこともできます。

import time 

target_time = '15:07:00' 
current_epoch = time.time() 

# get string of full time and split it 
time_parts = time.ctime().split(' ') 
# replace the time component to your target 
time_parts[3] = target_time 
# convert to epoch 
future_time = time.mktime(time.strptime(' '.join(time_parts))) 

# if not in the future, add a day to make it tomorrow 
diff = future_time - current_epoch 
if diff < 0: 
    diff += 86400 

time.sleep(diff) 
print 'Done waiting, lets get to work' 
3

可能であれば、ライブラリスケジュールをインストールすることをお勧めします。

使用pip install schedule

スケジュールを利用した場合にあなたのコードは次のようになります。1秒間隔が長すぎる場合

import schedule 
import time 

def task(): 
    print("Do task now") 

schedule.every().day.at("15:07").do(task) 

while True: 
    schedule.run_pending() 
    time.sleep(1) 

あなたは長く眠ることtime.sleep(1)は、必要に応じて調整することができます。ここにはschedule library pageがあります。

関連する問題