30 lines
754 B
Python
30 lines
754 B
Python
import threading
|
|
import queue
|
|
import time
|
|
|
|
class TaskRunner:
|
|
def __init__(self):
|
|
self.task_queue = queue.Queue()
|
|
self.running = False
|
|
|
|
def start(self):
|
|
self.running = True
|
|
worker = threading.Thread(target=self.run, daemon=True)
|
|
worker.start()
|
|
|
|
def stop(self):
|
|
self.running = False
|
|
|
|
def add_task(self, func, *args, **kwargs):
|
|
"""Thêm task vào hàng đợi"""
|
|
self.task_queue.put((func, args, kwargs))
|
|
|
|
def run(self):
|
|
while self.running:
|
|
try:
|
|
func, args, kwargs = self.task_queue.get(timeout=1)
|
|
func(*args, **kwargs)
|
|
self.task_queue.task_done()
|
|
except queue.Empty:
|
|
continue
|