前提・実現したいこと
プログラムを起動してからリアルタイムで1時間後に終了(whileループを抜ける)させたいです
発生している問題・エラーメッセージ
[error] script [ aaaaaaaaaa ] stopped with error in line 6 [error] TypeError ( can't compare 'timedelta' to 'int' ) [error] --- Traceback --- error source first line: module ( function ) statement 729: datetime ( __gt__ ) File "C:\Users\titou\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar\Lib\datetime.py", line 390, in _cmperror 6: main ( <module> ) while elapsed_time < t1: [error] --- Traceback --- end --------------
該当のソースコード
python
1import datetime 2 3start = datetime.datetime.now() 4t1 = datetime.timedelta(hours=1) 5elapsed_time = 0 6while elapsed_time < t1 7 ~~1時間後に終わらせたい処理~~ 8 end = datetime.datetime.now() 9 elapsed_time = end - start 10 print(u"経過時間:{elapsed_time}")
試したこと
思いついたのは
「start」と「end」の変数を作り
startに開始時刻をendに1ループ分の終了時刻を入れ
終了時刻から開始時刻を引いて残った経過時間(elapsed_time)が
t1(1時間後の時間)を過ぎていれば抜けるという考えたのですがどうにも
エラーが出てうまく回りません…
補足情報(FW/ツールのバージョンなど)
sikulix 2.0.4
•Python language level 2.7 (supported by Jython)
エラーが出ている箇所がコードに含まれてないようですが。
コードは全文提示しましょう
line 390, in _cmperrorの部分ですか?
390もコードはなくてたった9行しかないんですけど
なんで出てるのかもよくわかってません…
そこもそうなんですけど恐らく
whileの比較の時にelapsed_timeがnullだとだめだと思って0入れたんですけど
これがまずかったりしてるんですかね
これループは必須なのでしょうか?
一定時間止めるだけなら
time.sleep
で止められると思いますがどうでしょうか
q_sane_q さん
sleepだと処理そのものが止まってしまいますよね?多分
自分は「やりたいを処理を開始~1時間後までの間ループしてやり続けさせる」というところがメインなのでやりたい処理が止まってしまうと困ります
わかりにくいテキスト入れてしまったので申し訳ないです
回答3件
あなたの回答
tips
プレビュー