Есть ли какая-либо цель для приложения Python использовать C, кроме производительности? - PullRequest
1 голос
/ 20 февраля 2010

Если бы Python был так же быстр, как C, последний присутствовал бы в приложениях / библиотеках python?

Пример: если бы Python был быстрым как C, PIL был бы полностью написан на Python?

Ответы [ 4 ]

7 голосов
/ 20 февраля 2010

Для доступа к "устаревшим" библиотекам C и средствам ОС.

5 голосов
/ 21 февраля 2010

Хотя вы, конечно, можете использовать ctypes для доступа к существующему коду C, вам не обязательно хотеть в достаточно сложных случаях: когда вы кодируете интерфейс, предназначенный для (и реализовано в) C, отсутствие компиляции может означать, что небольшие ошибки на стороне вызывающей стороны, которые просто отказываются правильно компилироваться в C, могут привести к сбоям всего приложения.

Таким образом, использование кода C (а не ctypes) с целью повторного использования хорошего существующего кода C может иметь большой смысл ( Cython , конечно, тоже хорошо, поскольку он генерирует C код, который в случае ошибок на стороне вызывающей стороны не должен компилироваться; -).

Перекодировать все с нуля, а не повторно использовать хороший, существующий, надежный и точно настроенный код, в любом случае, конечно, не имеет особого смысла - есть так много интересных новых проблем, которые нужно преодолеть, что тратить свое время просто на подражание существующее, просто прекрасное решение старой и уже побежденной проблемы, скорее всего, не будет лучшим, наиболее продуктивным и наиболее удовлетворительным способом провести время ;-) .

2 голосов
/ 21 февраля 2010

Имеет смысл использовать модули C в Python для:

  • Производительность
  • Библиотеки, которые не будут портированы на Python (например, из-за соображений производительности) или которые используют функции, специфичные для ОС
  • Scripting. Например, многие игры используют Python, Lua и другие языки в качестве языков сценариев. Поэтому они предоставляют функции C / C ++ для Python.

Что касается вашего примера: Да, но Python по своей природе медленнее, чем C. Если бы оба были одинаково быстрыми, имело бы смысл использовать Python, потому что код C часто более подвержен атакам (переполнение буфера и прочее).

0 голосов
/ 21 февраля 2010

Для доступа к оборудованию.

...