Я собираюсь написать некоторый вычислительно-интенсивный код Python, который почти наверняка проведет большую часть своего времени внутри функций линейной алгебры numpy
.
Проблема под рукой неловко параллельна. Короче говоря, самым простым способом для меня воспользоваться этим было бы использование нескольких потоков. Главным барьером почти наверняка станет Глобальная блокировка переводчика (GIL).
Чтобы помочь в разработке этого, было бы полезно иметь ментальную модель, для которой можно ожидать, что операции numpy
будут выпускать GIL для их продолжительности. С этой целью я был бы признателен за любые эмпирические правила, dos и don'ts, указатели и т.д.
В случае, если это имеет значение, я использую 64-разрядный Python 2.7.1 для Linux, numpy
1.5.1 и scipy
0.9.0rc2, построенный с использованием Intel MKL 10.3.1.