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
 |