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

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

Сообщение Anonymous »

При использовании многопроцессорной обработки Python предположим, что я создаю 10 процессов, разветвляя основной процесс. Мы знаем, что дочерний процесс наследует состояние родительского процесса в своем собственном пространстве памяти.
У меня есть движок SQLAlchemy, созданный в родительском процессе с размером пула 5. Во время разветвления в пуле нет никаких соединений.
Поскольку дочерние процессы имеют собственное пространство памяти, это означает, что унаследованный движок должен быть доступен только им, верно?
  • Если это так, означает ли это, что общее количество возможных активных
    подключений будет равно 10 [количество процессов] * 5 [размер_пула] = 50?
    Если нет, то как здесь работает пул соединений?
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:
results = [pool.apply_async(get_stuff) for _ in range(10)]
# Collect results
output = [result.get() for result in results]


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

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