文章

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 进行授权