第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多線程模式下aiosqlite和SQLite有什么區(qū)別?

多線程模式下aiosqlite和SQLite有什么區(qū)別?

函數(shù)式編程 2023-07-27 09:53:14
我正在嘗試異步處理多個文件,并且處理每個文件需要對 SQLite 數(shù)據(jù)庫進(jìn)行一些讀取和寫入。我一直在尋找一些選項,并找到了 aiosqlite 模塊。但是,我在閱讀了 SQLite 文檔,它說它支持多線程模式。事實上,默認(rèn)模式是“序列化”,這意味著它“可以不受限制地被多個線程安全地使用”。我不明白有什么區(qū)別。aiosqlite 文檔說:aiosqlite 允許在主 AsyncIO 事件循環(huán)上與 SQLite 數(shù)據(jù)庫進(jìn)行交互,而不會在等待查詢或數(shù)據(jù)獲取時阻止其他協(xié)程的執(zhí)行。它通過每個連接使用一個共享線程來實現(xiàn)這一點(diǎn)。我知道 aiosqlite 和 sqlite 上的“多線程”模式之間存在差異,因為多線程模式每個線程只需要一個連接,而在 aiosqlite 中,您可以跨多個線程重用此單個連接。但這不是和序列化模式一樣“可以不受限制地被多個線程使用”嗎?編輯:我現(xiàn)在的問題是“我目前的理解是否正確?”:“序列化”模式下的 Sqlite 可以同時被多個線程使用,因此如果我threading在 python 中使用該模塊并生成多個線程,則會使用此模式。在這里,我可以選擇每個線程使用單獨(dú)的連接或跨多個線程共享連接。aiosqlite 與 asyncio 一起使用。因此,由于 asyncio 有多個共享一個線程的協(xié)程,aiosqlite 也可以使用一個線程。因此,我創(chuàng)建了一個在所有協(xié)程之間共享的連接。由于 aiosqlite 基本上是 sqlite 的包裝器,因此我可以結(jié)合 1 和 2 的功能。因此我可以擁有多個線程,其中每個線程都有一個帶有多個協(xié)程的 asyncio 事件循環(huán)。因此,基本的 sqlite 功能將處理多線程,而 aiosqlite 將處理協(xié)程。
查看完整描述

1 回答

?
哆啦的時光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗 獲得超6個贊

首先關(guān)于線程:

Sqlite ...可以同時被多個線程使用

由于GIL的原因,它仍然不會同時運(yùn)行,線程總是并發(fā)運(yùn)行(不是并行)。使用 GIL 唯一的問題是你不知道線程何時會被中斷。但是 asyncio 允許您“手動”在線程之間切換并等待某些 IO 操作(例如數(shù)據(jù)庫通信)。


讓我解釋一下不同模式之間的區(qū)別:

  • 單線程- 創(chuàng)建單個數(shù)據(jù)庫連接,無需任何互斥體或任何其他機(jī)制來防止多線程問題。

  • 多線程- 使用互斥鎖創(chuàng)建單個共享數(shù)據(jù)庫連接,互斥鎖為每個與數(shù)據(jù)庫的操作/通信鎖定該連接。

  • 序列化- 每個線程創(chuàng)建多個數(shù)據(jù)庫連接。

回答更新中的問題:

  1. 是的

    “序列化”模式下的 Sqlite 可以同時被多個線程使用,因此如果我在 python 中使用線程模塊并生成多個線程,則會使用此功能。在這里,我可以選擇每個線程使用單獨(dú)的連接或跨多個線程共享連接。

  2. 是的,它將在它們之間共享一個連接。

    aiosqlite 與 asyncio 一起使用。因此,由于 asyncio 有多個共享一個線程的協(xié)程,aiosqlite 也可以使用一個線程。所以我創(chuàng)建了一個在所有協(xié)程之間共享的連接

  3. 是的。

    由于 aiosqlite 基本上是 sqlite 的包裝器,因此我可以結(jié)合 1 和 2 的功能。因此我可以擁有多個線程,其中每個線程都有一個帶有多個協(xié)程的 asyncio 事件循環(huán)。因此,基本的 sqlite 功能將處理多線程,而 aiosqlite 將處理協(xié)程。


查看完整回答
反對 回復(fù) 2023-07-27
  • 1 回答
  • 0 關(guān)注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號