Ну, из вашего описания это звучит так, как будто вещи связаны с IO ... В этом случае параллелизм (по крайней мере, на одном устройстве IO) не сильно поможет.
Редактировать: я только что понялчто вы имели в виду больше облачных вычислений, а не запускали несколько процессов на одной машине ... Однако мой совет все еще остается верным ... PyTables весьма полезен для вычислений вне ядра!
Вы упомянули, что используете mmap для доступа к данным.Следовательно, время выполнения, вероятно, сильно зависит от того, как ваши данные структурированы на диске.
Memmapping может на самом деле быть довольно медленным в любой ситуации, когда физическое оборудование должно тратить большую часть своего времени на поиск (например, чтение среза по плоскости постоянной Z в C-упорядоченном трехмерном массиве).Один из способов смягчить это - изменить порядок упорядочения ваших данных, чтобы уменьшить количество запросов, необходимых для доступа к частям, которые вам, скорее всего, понадобятся.
Другой вариант, который может помочь, - это сжатие данных.Если ваш процесс сильно ограничен вводом-выводом, вы можете добиться значительного ускорения, сжимая данные на диске (а иногда даже в памяти) и распаковывая их на лету перед выполнением расчетов.
Хорошая новость заключается вчто есть очень гибкая, ориентированная на numy библиотека, которая уже собрана, чтобы помочь вам с обоими из них.Взгляните на pytables .
Я был бы очень удивлен, если бы tables.Expr
значительно (~ 1 порядок) не превзошел ваши вычисления вне ядра с использованием массива memmapped. Смотрите здесь для хорошего, (хотя и консервированного) примера.Из этого примера: