質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

6106閲覧

python 時間 経過 カウント 処理

junnnn

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/11/10 14:49

pythonでの時間のカウントがわかりません,,,
pythonで現在の時刻から1分が経過したら処理するコードがイメージつきません、、
time.sleep()でカウントするのではなく、現在の時刻取得し1分経過後に指定したコードを処理すると言った感じです。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

time.sleep()を使わず5秒後にhoge出力する例です。

Python

1import time 2t = time.time() 3print('start') 4while True: 5 c = time.time() 6 if c - t >= 5: 7 print('hoge') 8 break 9print('end')

投稿2017/11/10 15:25

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junnnn

2017/11/10 18:01

回答ありがとうございます。 非常に参考になりました。 問題の方も解決しました。
guest

0

自己解決

import datetime

while True:
time = datetime.datetime.now()
if time.second == 0: # 現在の時刻(秒数)が1 2 3...59とカウントされ、秒数が0に戻ったら処理
print('1分経過')

投稿2017/11/10 18:10

junnnn

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/11/10 18:22

この方法だと1分ちょうどはかれないような... can110さんのように時間の差分を考える必要があります。
LouiS0616

2017/11/10 18:34

いや、KSwordOfHasteさんの方法で充分ですね。シングルスレッドでいいのですし。
junnnn

2017/11/10 19:00

そうですね、ですが、実行時からタイムを測るのではなく現在の時刻から、分区切りに実行したいのであれば自分が解決したコードがいいのではないかと思っています。 例)作ったアプリが使用するユーザーがどのタイミングで実行しても同じ時刻にコードが処理されると言った感じです。
LouiS0616

2017/11/10 19:03

なるほど。しかしそれですと、ちょっと説明不足かな、という感があります。 これらの発言から、そのような仕様を読み取るのは無理があるかと。 ・『現在の時刻から1分が経過したら』 ・『現在時刻から1分経過したタイミングで』 ・『正確な時間でのカウント』
LouiS0616

2017/11/10 19:06

質問にあたって、以下の点が非常に不明瞭だったと思います。 ・なぜtime.sleepを避けなければならないのか? ・どのような目的で1分待つのか? ・シングルスレッドか?マルチスレッドか? ・OSなどの環境は? 後だしですみません、本来ならば前もって聞くべきではありますが... 過ぎた話なので、次回以降の質問の際はもう少し具体性を持たせてあげてください。
junnnn

2017/11/10 19:13

いえいえ、自分が説明不足でしたので、とても参考になります。 次回から、気をつけていきます。 ありがとうございます。
guest

0

言語名 アラーム (alarm)、タイマー (timer) でぐぐるとHITするかと。
例) python timer
threading.Timer

以下はタイマーを使ったコードです。

Python

1# -*- coding: utf-8 -*- 2import threading 3import time 4 5 6def log(text): 7 print("{0}:{1}".format(text, time.time())) 8 9 10def hello(): 11 log("hello") 12 13 14def main(): 15 # 5秒後に実行 16 t = threading.Timer(5, hello) 17 t.start() 18 log("main ") 19 time.sleep(7) 20 log("main ") 21 22 23if __name__ == '__main__': 24 main()

注意点としてリアルタイムOSでない場合、タイマーイベントの発火タイミングに注意する必要があります。

threading.Timer
タイマが活動を実行するまでの待ち時間は、ユーザが指定した待ち時間と必ずしも厳密には一致しません。

投稿2017/11/10 15:36

編集2017/11/10 15:39
umyu

総合スコア5846

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junnnn

2017/11/10 17:56

回答ありがとうございます。 すみません、正確な時間でのカウントなので、欲しかった回答とは違ってました。 ですが、参考になりました。 問題の方も解決しました。
guest

0

うーん・・・sleepでよいと思います。sleepはカウントする機能ではありません。あくまで「任意の時間プログラムの実行を中断」するものです。1秒,1分,1時間,1日等々の長い時間でも1回の呼び出しで待たせることができます。

python

1from time import sleep 2 3def do_something(): 4 ... 5 6sleep(60) # 1分待つ 7do_something() # そして何かする

投稿2017/11/10 15:30

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KSwordOfHaste

2017/11/10 15:33

あ・・・ひょっとしてpythonのGUIアプリで「現在時刻から1分経過したタイミングで何かする」のが目的でしょうか?もしそうならsleepはNGですね。もしそのような目的ならどんなGUIライブラリーを使っているかによってやり方が違うと思います。
junnnn

2017/11/10 17:58

回答ありがとうございます。 はい、「現在時刻から1分経過したタイミングで何かする」のが目的でした。 問題の方はなんとか解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問