Я думаю, что это случай, основанный на чтении, где люди заявили, что sqlite3 может использоваться различными потоками. Тем не менее, тесты скорости показывают, что потоки / процессы конкурируют. Конкурирующие потоки имеют смысл, но я подумал, что генерация новых процессов дублирует sqlite3 «экземпляр / движок» и приведет к ускорению процессов, обращающихся к одной и той же базе данных. Ниже приведен пример того, что я имею в виду.
import sqlite3
from concurrent.futures import ProcessPoolExecutor
num_cores = 4
def worker():
con = sqlite3.connect(<path>)
con.execute(<select statement>)
if __name__ == '__main__':
with ProcessPoolExecutor(num_cores) as ex:
for _ in range(1_000):
ex.submit(worker)
По мере увеличения количества ядер каждый запрос выполняется медленнее, и, следовательно, общее время уменьшается. Правильно ли мое понимание?
Есть ли способ для Python процессов читать из базы данных SQLite без замедления?