首先,我甚至不知道在python中可能存在内存错误/段错误。感谢学习新东西!
我创建了这个数据库
database = DBManager(dbEndpoint,dbUser,dbPass,dbSchema)
然后我尝试在线程中使用它
def stateTimeThreadStart():
database.getTable('CLIENTS')
threads = []
threads.append(threading.Thread(name='State Updater', target=stateTimeThreadStart, args=()))
threads[0].start()
输出
Segmentation fault: 11
这到底是怎么回事?它肯定与database.getTable(' CLIENTS')有关,因为当我发表评论时,问题不会发生。另外,我也试图将数据库传递给线程,没有运气。有什么想法吗?
谢谢!
答案 0 :(得分:2)
由于数据库连接器,可能会出现Python中的分段错误。用于连接数据库的驱动程序通常在C基础上编码,因此在RAM过载或其他原因导致分段错误时。
您使用多线程这一事实进一步加剧了这种情况。如果不仔细处理多线程,则已知大多数数据库驱动程序会抛出分段错误。大多数数据库驱动程序协议无法一次使用同一连接处理多个线程。
经验法则是不在线程之间共享单个连接。