Все ли процессы Python используют один и тот же экземпляр / движок SQLite в sqlite3? - PullRequest
0 голосов
/ 13 февраля 2020

Я думаю, что это случай, основанный на чтении, где люди заявили, что 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 без замедления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...