需要的是线程间通信的方式,当主线程结束时,发一个信号给扫描线程,然后join它。扫描线程收到后,结束自己。

线程间通信的方式有很多了,比如用Thread Event。甚至你用redis来通信都没问题

例子

import threading
import time
class StoppableThread(threading.Thread):
def __init__(self, event):
super(StoppableThread, self).__init__()
self.event = event
def run(self):
while True:
print('OK')
if self.event.wait(timeout=1): # 这里的timeout可以是1分钟
break # 表示有人通知要退出了
event = threading.Event()
t = StoppableThread(event)
t.start()
time.sleep(5)
event.set()
t.join()