.so
файлы являются общими объектными файлами, которые являются скомпилированными общими библиотеками.Они обычно пишутся на скомпилированном языке, таком как C
, C++
, Go
и т. Д.
Python является интерпретируемым языком, код, написанный на нем, имеет тенденцию быть медленным, потому что интерпретатору нужно пройти черезкаждую строку исполняемого кода, перевести его в некоторый вид промежуточного байтового кода и затем, наконец, выполнить байтовый код.Это может быть медленным.
В случаях, когда речь идет о производительности, модули пишутся на языке более низкого уровня, например C
, который затем компилируется в общий объектный файл.Эти файлы могут быть загружены интерпретатором Python и использоваться как обычный модуль Python.Поскольку эти модули уже скомпилированы в машинный код, они могут выполняться непосредственно, без прохождения через интерпретатор, и, следовательно, они намного быстрее, чем эквивалентный код, написанный на Python.
Запись на языке более низкого уровня, таком как C
, также позволяет эффективно использовать память и даже снимать глобальную блокировку интерпретатора для использования многоядерного пареллизма.Научные модули, такие как numpy
, scipy
являются примерами из них.