Как работает пул соединений в многопроцессорной обработке Python?Python

Программы на Python
Anonymous
Как работает пул соединений в многопроцессорной обработке Python?

Сообщение Anonymous »

При использовании многопроцессорной обработки Python предположим, что я создаю 10 процессов, разветвляя основной процесс. Мы знаем, что дочерний процесс наследует состояние родительского процесса в своем собственном пространстве памяти.
У меня есть движок SQLAlchemy, созданный в родительском процессе с размером пула 5. Во время разветвления в пуле нет никаких соединений.
Поскольку дочерние процессы имеют собственное пространство памяти, это означает, что унаследованный движок должен быть доступен только им, верно?
  • Если это так, означает ли это, что общее количество возможных активных
    подключений будет равно 2 [количество процессов] * 5 [размер_пула] = 10?
    Если нет, то как здесь работает пул соединений?
import multiprocessing
import os

# Create an engine with a connection pool in the parent process
engine = create_engine('sqlite:///example.db', pool_size=5)

def initializer():
# Connections in the pool are gracefully removed!
engine.dispose(close=False)

def get_stuff():
with engine.connect() as conn:
conn.execute(text("..."))

with multiprocessing.Pool(10,initializer=initializer) as pool:
pool.apply(get_stuff)


Подробнее здесь: https://stackoverflow.com/questions/786 ... processing

Вернуться в «Python»