Python multithreading tips: A better alternative to ```time.sleep``` for pausing!
The method of waiting in Python multithreading environment
Threading Event
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import threading
event = threading.Event()
event.wait(5)
class Checker(threading.Thread):
def __init__(self, event):
super().__init__()
self.event = event
def run(self):
while not self.event.is_set():
print("check data in redis")
time.sleep(60)
trigger_async_task()
event = threading.Event()
checker = Checker(event)
checker.start()
if user_cancel_task():
event.set()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import threading
import time
def worker(event):
print("Worker thread is waiting.")
event.wait()
print("Worker thread is awake and continuing.")
def main():
event = threading.Event()
thread = threading.Thread(target=worker, args=(event,))
thread.start()
time.sleep(3)
print("Main thread is notifying the worker.")
event.set()
thread.join()
本文由作者按照 CC BY 4.0 进行授权