shiza
У меня такое подозрение - что этот fork жрет дофига памяти.
Там же небось на каждый форк уходит своя копия питона?
Весь код (читай: всё, что написано на C) будет общий, а вот адресное пространство копируется, то есть каждый процесс имеет свою копию данных (питоновский код в данном случае тоже является данными).
Вообще это миф, что при использовании fork будет намного меньше проблем, чем при использовании threads. Нет проблем, если сразу после fork в одном процессе выполняется exit() или exec*() (для последнего случая на некоторых платформах существует vfork, который адресное пространство не копирует, тем самым делая операцию очень быстрой). fork вообще очень плохо дружит с ООП. Например, если вы сконструировали объект до вызова fork, а деструктор вызывается после, то он будет вызвал несколько раз. С внутренними данными проблем не возникает, зато они есть, если вы в деструкторе подчищаете какие-то внешние ресурсы.