我有一个在 Raspberry Pi 3 上运行的 python 2.7 脚本。
class UIThread(threading.Thread):
def __init__(self, threadID, name, counter, U):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
self.U = U
def run(self):
self.U.run()
def main():
time.sleep(3)
try:
try:
###launch a UI running as background thread#####
U = UIlib.UI()
thread1 = UIThread(1, "UI", 1, U)
thread1.daemon = True
thread1.start()
except:
###if there is no monitor, lanch a fake UI class#######
U = UIlib.nomonitorUI()
thread1 = UIThread(1, "NMUI", 1, U)
thread1.daemon = True
thread1.start()
print "No Monitor detected"
pass
####perform interaction with the BQ chip, contain a while true loop######
char_balan(U)
except:
e = sys.exc_info()
print e
print "UI exit"
基本上它的作用是通过 UART 向芯片发送消息,获取响应消息,更新日志文件并将其打印到 UI(由 python curses 创建的监视器上显示的 UI)。它每 1 秒执行一次。
该脚本运行 32 小时没有错误,然后崩溃。UI 崩溃并被错误消息覆盖:“无法打开 shsh:加载共享库时出错:libc.so.6:无法打开共享对象文件...”蟒蛇脚本
我检查了树莓派的内存状态。python 进程在第 32 小时使用了大约 1/4 的总内存。所以不是内存导致崩溃。另外,我尝试在没有监视器的情况下运行它,这将启动一个没有 python.curses 的假 UI 类。同样的崩溃发生在第 32 小时。
现在,我不知道为什么脚本会崩溃。