я только что обнаружил http://code.google.com/p/re2, многообещающую библиотеку, которая использует заброшенный путь (Thompson NFA) для реализации механизма регулярных выражений, который может быть порядком величин быстрее, чем доступные двигатели awk, Perl или Python.
поэтому я загрузил код и сделал обычную вещь sudo make install
. однако это действие, по-видимому, сделало не что иное, как добавление /usr/local/include/re2/re2.h
в мою систему. казалось, что существует некоторое расширение `.` file in addition, but then what is it with this
.a``?
Я хотел бы использовать re2 из Python (предпочтительнее Python 3.1) и был рад видеть файлы типа make_unicode_groups.py
в дистрибутиве (возможно, просто используется во время процесса сборки?). однако они не были развернуты на моей машине.
как я могу использовать re2 из Python?
update два дружелюбных человека указали, что я могу попытаться создать файлы DLL/*.so из источников, а затем использовать библиотеку Pythons ctypes
для доступа к ним. может ли кто-нибудь дать полезные указания, как это сделать? im в значительной степени clueless здесь, особенно с первой частью (создание файлов *.so).
update Я также разместил этот вопрос (ранее) в группе разработчиков re2, без ответа до сих пор ( это небольшая группа), а сегодня (несколько более густонаселенной) comp.lang.py group [- thread here-]. надежда состоит в том, что люди из разных уголков могут контактировать друг с другом. я думаю, что опытный человек может сделать это через несколько часов во время своего 20% свободного времени-времени-google-too timlice; это завяжет меня в течение нескольких недель. есть ли инструмент для автоматического отключения С++ для любого стиля C, который должен поддерживать Python?, тогда, возможно, получение жизнеспособного результата может быть уменьшено до умной цепочки инструментов.
(rant), почему это так сложно? думать, что в 2010 году мы все еще не можем иметь наши многочисленные программные продукты, которые просто говорят друг с другом. это такой дорожный блок, что всякий раз, когда вы хотите обратиться к некоторому C-коду с Python, вы должны всегда прокручивать эти связующие биты. это требует большой работы, но только предоставляет модуль расширения, который специфичен для версии кода C и версии Python, поэтому он стареет быстро. (/rant) можно было бы запускать такие вещи в (например, если у меня был исполняемый файл re2, который может создавать результаты для данных, которые входят, например, subprocess/Popen/communicate()
)? (это не должно быть чистым средством командной строки, которое требует открытия процесса каждый раз, когда это необходимо, но отдельные процессы, которые выполняются непрерывно, возможно, существуют обертки, которые "демонизируют такой C-код".