我有一个线程从数据采集设备读取数据。当我的主函数崩溃时,它不会杀死数据采集线程。如果线程外部有异常,我如何停止数据采集?
我的程序的一个简化版本是:
class Daq_reader():
def __init__(self):
self.keepReading = True
self.data = []
def acquire(self):
while self.keepReading:
self.data = append_new_data(data)
time.sleep(1)
def main():
reader = Daq_reader()
daq_thread = threading.Thread(target=reader.acquire, daemon=True)
daq_thread.start()
# rest of program here that might crash
我试着让守护进程变成真和假。谢谢!
发布于 2022-04-11 01:33:11
看来你想杀了你的线。可以使用python-worker
(链接)创建和中止工作人员。
from worker import worker
class Daq_reader():
def __init__(self):
self.keepReading = True
self.data = []
@worker
def acquire(self):
while self.keepReading:
self.data = append_new_data(data)
time.sleep(1)
def main():
try:
reader = Daq_reader()
reader_woker = reader.acquire()
except:
reader_woker.abort()
当你用reader.acquire()
装饰时,你的@worker
会在你的背景中自动运行。
https://stackoverflow.com/questions/71508119
复制相似问题