У меня есть приложение python, которое собирается создать процесс для каждого элемента данной коллекции входов. Входные данные представляют собой набор из примерно 8 элементов. И приложение периодически читает тему, чтобы получить 8 элементов.
Для каждого элемента ввода я создаю новый процесс и передаю ввод функции.
Функция связана с процессором по своей природе, она выполняет числовые операции.
В моем приложении есть объект конфигурации, который является словарем. Я загружаю данные в конфигурацию во время загрузки основного процесса, а затем создаю пул с 8 рабочими подпулами.
Каков правильный механизм передачи объекта конфигурации в каждый из процессов? Я не хочу увеличивать объем памяти процесса.
Например:
# cpu intensive operation
def cpu_bound(input):
... # complex cpu bound op
# I want to use config here
return output
def get_config():
# create configuration object
config = {
"version": 1,
"disable_existing_loggers": False,
"loggers": {
"": {
"level": "INFO"
},
"another.module": {
"level": "DEBUG"
}
}
}
def pool_handler(inputs):
p = Pool(8) # 8 core machine
results = p.map(cpu_bound, inputs)
return results
if __name__ == "__main__":
config = get_config()
# get inputs from a topic
inputs = get_inputs()
results = pool_handler(inputs)
Вопрос Каков рекомендуемый подход к использованию конфигурации в каждом процессе? Конфигурация по своей природе доступна только для чтения, так как мне нужно загрузить ее только один раз при загрузке приложения. Есть несколько способов, но каков рекомендуемый подход для этого сценария?