Python多线程Sqlite使用分段错误!

时间:2011-06-09 08:04:28

标签: python multithreading sqlite

我正在开发一个在多线程程序中使用Sqlite的python代码。远程主机调用一些xmlrpc函数并创建新线程。在新线程中运行的每个函数都使用sqlite将数据插入数据库或从数据库中读取数据。

我的问题是,当同时调用服务器超过5次时,服务器会出现“分段错误”。并且输出不提供任何其他信息。知道什么可能导致问题吗?

2 个答案:

答案 0 :(得分:2)

如果您阅读了sqlite文档(http://www.sqlite.org/threadsafe.html),您会看到它说:

  

SQLite支持三种不同   线程模式:

     

单螺纹。在这种模式下,全部   互斥体被禁用,SQLite是   在一个以上的地方使用不安全   立即开始。

     

多线程。在这种模式下,SQLite可以   被多个线程安全使用   前提是没有单一的数据库   连接同时使用   两个或多个线程。

     

序列化。在序列化模式下,SQLite   可以安全地由多个线程使用   没有限制。

因此,您将处于单线程模式,或者处于多线程模式并重用连接。重复使用连接只能在顺序模式下安全(这很慢)

现在,Python文档指出它不应该允许您共享连接。您使用的是python-sqlite3模块,还是在本地与数据库连接?

答案 1 :(得分:1)

我的APSW模块是线程安全的,您可以使用它。标准Python SQLite无法跨多个线程安全地同时使用。