Есть ли какая-либо цель для приложения Python использовать C, кроме производительности?

1

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

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

  • 0
    Ах, можно мечтать ...
Теги:
performance
bytecode

4 ответа

7
Лучший ответ

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

5

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

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

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

2

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

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

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

  • 1
    Первые два имеют смысл. Третий кажется как-то задом наперед. Третьим кажется, почему приложение C будет использовать Python, а не то, почему приложение Python будет использовать какой-то модуль C.
0

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

  • 0
    Вы хотите полностью обойти ОС? Или вы хотите использовать более неясные методы OS API? Что вы имеете в виду?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню