Почему некоторые стандартные библиотеки Python написаны на .so, а большинство других на .py? - PullRequest
0 голосов
/ 17 сентября 2018

Большинство стандартных библиотек написаны в Python-файлах .py, но некоторые находятся в .so-файлах в Unix и .pyd в Windows. Например, os пишется в os.py, а pyexpat пишется в pyexpat.cpython-36m-darwin.so. Что такого особенного в этих библиотеках .so?

1 Ответ

0 голосов
/ 17 сентября 2018

.so файлы являются общими объектными файлами, которые являются скомпилированными общими библиотеками.Они обычно пишутся на скомпилированном языке, таком как C, C++, Go и т. Д.

Python является интерпретируемым языком, код, написанный на нем, имеет тенденцию быть медленным, потому что интерпретатору нужно пройти черезкаждую строку исполняемого кода, перевести его в некоторый вид промежуточного байтового кода и затем, наконец, выполнить байтовый код.Это может быть медленным.

В случаях, когда речь идет о производительности, модули пишутся на языке более низкого уровня, например C, который затем компилируется в общий объектный файл.Эти файлы могут быть загружены интерпретатором Python и использоваться как обычный модуль Python.Поскольку эти модули уже скомпилированы в машинный код, они могут выполняться непосредственно, без прохождения через интерпретатор, и, следовательно, они намного быстрее, чем эквивалентный код, написанный на Python.

Запись на языке более низкого уровня, таком как C, также позволяет эффективно использовать память и даже снимать глобальную блокировку интерпретатора для использования многоядерного пареллизма.Научные модули, такие как numpy, scipy являются примерами из них.

...