gpt4 book ai didi

python - 当找到我要查找的内容时停止所有搜索线程? (Python)

转载 作者:太空宇宙 更新时间:2023-11-03 19:16:45 24 4
gpt4 key购买 nike

每个线程都在不同的数据对象列表中搜索序列号。如果找到,则将该对象放入队列中。序列号是唯一的。

q = Queue.Queue(10)
thread_list = []
for i in range(0, 10):
t = Thread(serial)
thread_list.append(t)
t.start()

而不是等待所有线程完成:

for t in thread_list:
t.join()

当找到要查找的序列号时,有什么方法可以停止所有线程吗?并考虑到可能找不到序列号而队列保持为空的可能性?

最佳答案

简单的方法是在你的线程运行器类中使用队列...(我假设是串行的)

class FindSerial(Thread):
def __init__(self, serial, queue):
this.serial = serial
this.queue = queue
super(FindSerial, self).__init__()

def run(self):
....
while LOOKING_FOR_SERIAL:
if not self.queue.empty():
return
....

...
for i in range(0, 10):
t = FindSerial(serial, q)
...

现在,通过检查循环中的队列,您可以检查另一个线程是否找到了您要查找的对象,如果找到了,那么您只需从 run 方法返回,该方法将允许 join()收割线程。

注意:我可能只会在循环中检查空的 N 次迭代,以避免大量的锁争用。

关于python - 当找到我要查找的内容时停止所有搜索线程? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com