実現したいこと
毎10秒ごとに実行される処理をthreadで2つ実行させる
発生している問題・分からないこと
毎10秒ごとの処理がスレッドの数だけ多重実行されることがある。
該当のソースコード
Python
1import time 2import datetime 3import schedule 4import threading 5 6class Check(): 7 def __init__(self, i): 8 self.int = i 9 10 def start(self): 11 print(f'started / {self.int}: {datetime.datetime.now()}') 12 13 for i in range(0, 60, 10): 14 schedule.every().minute.at(":{}".format(str(i).zfill(2))).do( 15 self.check 16 ) 17 18 while True: 19 schedule.run_pending() 20 time.sleep(1.5) 21 22 def check(self): 23 print(f'{self.int}: {datetime.datetime.now()}') 24 25 26def main(): 27 checkers = [] 28 for i in range(2): 29 checker = Check(i) 30 checkers.append(checker) 31 32 threads = [] 33 for checker in checkers: 34 checker_thread = threading.Thread(target=checker.start) 35 threads.append(checker_thread) 36 checker_thread.start() 37 38 for thread in threads: 39 thread.join() 40 41main()
console
1started / 0: 2024-11-12 14:28:05.355389 2started / 1: 2024-11-12 14:28:05.355636 30: 2024-11-12 14:28:11.361782 41: 2024-11-12 14:28:11.362020 50: 2024-11-12 14:28:11.361897 61: 2024-11-12 14:28:11.362468 70: 2024-11-12 14:28:20.372013 81: 2024-11-12 14:28:20.372288 90: 2024-11-12 14:28:20.372198 101: 2024-11-12 14:28:20.372359 110: 2024-11-12 14:28:30.882826 121: 2024-11-12 14:28:30.882955 130: 2024-11-12 14:28:41.394638 141: 2024-11-12 14:28:41.394807 150: 2024-11-12 14:28:41.394730 161: 2024-11-12 14:28:41.394881
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ChatGPTでも解決できず。
補足
特になし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/11/13 04:19