【问题标题】:Can I get SQLITE3 to work in multiple c-threads?我可以让 SQLITE3 在多个 c 线程中工作吗?
【发布时间】:2015-09-13 13:37:15
【问题描述】:

我正在编写一个 python 程序,它在两个不同的 python 线程中访问两个不同的 SQLITE3 数据库。我是否认为这将在我的机器上使用 2 个内核?

【问题讨论】:

  • 你是在阅读还是在写作? SQLite 一次只支持一个编写器,所以无论你或 Python 做什么,如果你试图通过多线程来提高写入速度,它也无济于事。
  • 即使在不同的数据库中?这也适用于不同的流程吗?
  • 锁是每个数据库的,对其他进程也有影响。

标签: sqlite


【解决方案1】:

reply 暗示 pysqlite 模块在调用 C 语言 sqlite API 时释放 GIL。因此,必须有效地使用两个内核。当 Python 处理结果集时会发生什么是另一回事,并且可能会出现与全局解释器锁定相关的减速。在 SQL 查询相对较快的情况下,使用进程而不是线程可能会快一些。 (我自己没有查看pysqlite源代码)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2013-06-24
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多