可以使用队列(Queue)来在线程中添加新的任务。 队列是一种线程安全的数据结构,可以在多个线程之间安全地传递数据。
下面是一个示例,该示例定义了一个线程类 WorkerThread
,该线程从队列中获取任务并执行。
import threading
from queue import Queue
class WorkerThread(threading.Thread):
def __init__(self, queue):
super().__init__()
self.queue = queue
def run(self):
while True:
# Get the task from the queue
task = self.queue.get()
# Check if the task is "stop" to stop the thread
if task == "stop":
break
# Otherwise, execute the task
self.execute_task(task)
# Mark the task as done
self.queue.task_done()
def execute_task(self, task):
# Perform the task here
pass
# Create the queue and the worker thread
queue = Queue()
worker = WorkerThread(queue)
# Start the worker thread
worker.start()
# Add some tasks to the queue
queue.put("task1")
queue.put("task2")
# Wait for all tasks to be completed
queue.join()
# Add a "stop" task to the queue to stop the worker thread
queue.put("stop")
# Wait for the worker thread to finish
worker.join()
在这个例子中,你可以使用 queue.put()
方法向队列中添加新的任务。 任务将按照添加的顺序依次执行。
请注意,你还需要使用 queue.join()
方法等待队列中的所有任务完成,然后再将 "stop" 任务添加到队列中。 这样可以确保在终止线程之前所有任务都已完成。