Я не уверен в необходимости открытия отдельного процесса для каждого сообщения, полученного из сокетов. Я полагаю, у вас есть причина сделать все, что вы упомянули.
Насколько я понимаю, вы написали сокет на стороне сервера, который прослушивает клиентское соединение, принимает клиентское соединение, получает данные и отправляет эти данные различным процессам, которые вы создали для обработки этих сообщений.
Я предполагаю, что идентификатор сеанса остается неизменным для клиентского соединения. Каждый клиент отправляет данные, помеченные его идентификатором сеанса. Если это так, то вы можете легко решить это благодаря тому, что в Unix - разветвляются дубликаты дескрипторов файлов / сокетов. когда вы запускаете multiprocessing.Process (), вы можете передать ему дескриптор сокета. Убедитесь, что вы закрываете сокет в родительском процессе или процессе, в котором вы прослушиваете клиентские соединения. Таким образом, каждый процесс будет обрабатывать соединение и будет получать только сообщения для одного клиента, помеченного тем же идентификатором сеанса.
Я надеюсь, что это отвечает вашим потребностям.