簡體   English   中英

用Python編寫SQLite多線程

[英]Writing in SQLite multiple Threads in Python

我有一個sqlite3數據庫,我想從多個線程寫入它。 我有多個想法,但我不確定應該實施哪些。

  1. 如果數據庫被鎖定,則創建多個連接,檢測並等待
  2. 使用一個連接並嘗試使用序列化連接(似乎沒有在python中實現)
  3. 具有單個連接的后台進程,該進程從所有線程收集查詢,然后在其行為上執行它們
  4. 忘記SQlite並使用類似Postgresql的東西

這些不同方法的進步有哪些,最有可能取得豐碩成果? 還有其他可能性嗎?

嘗試使用https://pypi.python.org/pypi/sqlitedict圍繞Python的sqlite3數據庫的輕量級包裝器,具有類似dict的接口和多線程訪問支持。 但考慮到“並發請求仍在內部序列化,因此這種”多線程支持“並沒有給你帶來任何性能優勢。它是Python中sqlite限制的解決方法。”

PostgreSQL,MySQL等可以一次性為多個連接提供更好的性能

我以前用過方法1。 它是最簡單的編碼方式。 由於該項目有一個小網站,每個查詢只需幾毫秒。 可以及時處理所有用戶請求。

我以前也用過方法3。 因為當查詢需要更長的時間時,最好對查詢進行排隊,因為頻繁的“檢測和等待”在這里沒有任何意義。 並且需要一個經典的消費者 - 生產者模型。 編碼需要更多時間。

但是如果查詢真的很重且經常發生。 我建議看看像MS SQL / MySQL這樣的其他數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM