Это действительно зависит от того, чего вы пытаетесь достичь, а также от частоты создания и использования памяти ваших подпроцессов.Несколько долгоживущих, и вы можете легко уйти с несколькими процессами уровня ОС (см. Модуль subprocess
).Если вы порождаете много маленьких, многопоточность быстрее и требует меньше памяти.Но с многопоточностью вы сталкиваетесь с такими проблемами, как «безопасность потоков», глобальная блокировка интерпретатора и неприятные, скучные вещи, такие как семафоры и тупики.
Стратегии совместного использования данных между двумя процессами или потоками можно условно разделить на две категории: «Давайте разделить блок памяти» (используя Lock
s и Mutex
es) и «Давайте совместно использовать копии данных»(используя сообщения, каналы или socket
s).Метод совместного использования памяти мал, но сложен в управлении, поскольку он означает, что один поток не читает ту же часть разделяемой памяти, что и другой поток, пишет в него, что не является тривиальным и трудным для отладки.Метод копирования тяжелее в памяти, но его легче понять.Кроме того, он имеет явное преимущество, заключающееся в том, что его можно довольно просто перенести в сеть, что позволяет распределенные вычисления.
Вам также придется подумать о базовой ОС.Я не знаю специфики, но некоторые лучше, чем другие при разных подходах.
Я бы сказал, начните с чего-то вроде RabbitMQ .