我有一个程序,从数据库中提取“工作”,然后将其分派给工作人员。你知道吗
我有一个线程专门做一些工作在一个循环。它所做的工作来自数据库,而获取消息的调用被阻塞:
class MessageThread(Thread):
def __init__(self, db, worker_inbox, *args, **kwargs):
super(MessageThread, self).__init__(*args, **kwargs)
self.db = db
self.worker_inbox = worker_inbox # this is a stdlib Queue.Queue
def run(self):
while True:
message = self.db.get()
self.worker_inbox.put(message)
不必在数据库中添加一些“标志”,有没有好的方法来停止这个线程?目前我正在设置它的daemon
标志,当主线程退出时,它就会终止,但是我想知道是否有更好的机制或方法来设计它?你知道吗
让代码在队列中查找唯一的停止消息。如果它通常被传递给某个对象,那么一个表示“stop”的字符串是一种很好的快速自我记录方法。当它的时间终止工人,只要把'停止'到队列中。这会唤醒线程并告诉它已完成。您可以使用布尔值、none或适合您传递的消息的内容。你知道吗
如果db是一个消息队列,那么我只会在这个队列中添加一些“quit”假消息。 下面是一些伪代码。你知道吗
相关问题 更多 >
编程相关推荐