Tag: c ++

Как я могу написать функцию C, которая принимает либо int, либо float?

Я хочу создать функцию в C, которая расширяет Python, который может принимать входы типа float или int. Поэтому в принципе, я хочу, чтобы f(5) и f(5.5) были приемлемыми входами. Я не думаю, что могу использовать if (!PyArg_ParseTuple(args, "i", $value)) потому что он принимает только int или только float. Как я могу сделать свою функцию доступными […]

Как учитывать массив со смещением столбцов при расширении numpy с помощью C

У меня есть C-функция для нормализации строк массива в лог-пространстве (это предотвращает числовое недоиспользование). Прототипом моей C-функции является следующее: void normalize_logspace_matrix(size_t nrow, size_t ncol, double* mat); Вы можете видеть, что он принимает указатель на массив и изменяет его на месте. C-код, конечно, предполагает, что данные сохраняются как C-смежный массив, то есть смежный по ряду. Я […]

Вызов Py_Finalize () из C

Это продолжение вызова Python из C ++ При запуске программы я вызываю следующую функцию для инициализации интерпретатора: void initPython(){ PyEval_InitThreads(); Py_Initialize(); PyEval_ReleaseLock(); } Каждый поток создает свою собственную структуру данных и получает блокировку с помощью: PyGILState_STATE gstate; gstate = PyGILState_Ensure(); //call python API, process results PyGILState_Release(gstate); Скорее прямо, как только вы поняли GIL, но проблема […]

Разница между генерацией случайных чисел C ++ и Python

Я пытаюсь перевести код Python на C ++. То, что делает код, – это запуск моделирования monte carlo. Я думал, что результаты от Python и C ++ могут быть очень близкими, но кажется, что что-то смешное произошло. Вот что я делаю в Python: self.__length = 100 self.__monte_carlo_array=np.random.uniform(0.0, 1.0, self.__length) Вот что я делаю в C […]

Цена переключения между C ++ и Python

Я разрабатываю приложение на C ++, которое расширяется / записывается с помощью Python. Конечно, C ++ намного быстрее, чем Python, в общем, но обязательно ли это означает, что вы должны как можно чаще выполнять код C ++ поверх кода Python? Я спрашиваю об этом, потому что я не уверен, есть ли какая-либо стоимость переключения между […]

Py_initialize / Py_Finalize не работает дважды с numpy

Во втором вызове следующего кода мое приложение segfault, поэтому, я думаю, что я чего-то не хватает: Py_Initialize(); pName = PyString_FromString("comp_macbeth"); pModule = PyImport_Import(pName); Py_DECREF(pName); if(pModule == NULL) { PyErr_Print(); Py_Finalize(); return; } pFunc = PyObject_GetAttrString(pModule, "compute"); /* pFunc is a new reference */ if (!pFunc || !PyCallable_Check(pFunc) ) { PyErr_Print(); Py_Finalize(); return; } Py_Finalize(); Comp_macbeth.py […]

Почему рабочий день Python () отличается от tm_wday в C?

Документация Python определяет datetime.weekday() как целое число, где понедельник равно 0, а воскресенье – 6 , а tm.tm_wday – как дни с воскресенья . Поэтому tm_wday is (datetime.weekday() + 1) % 7 , что довольно неудобно. Учитывая, что Python обычно придерживается близких к C эквивалентов, почему это было сделано так?

Процесс двоичного отбора

Я работал над тем, что кажется простой задачей, которая сводит меня с ума. Так что, если вы представляете себе задачу программирования … читайте дальше. Я хочу иметь возможность использовать диапазон чисел, например [1:20], и печатать значения с помощью механизма, аналогичного алгоритму с двоичным сыром. Итак, сначала напечатайте наименьшее значение (в данном случае 1), а затем […]

Как перенести эту функцию NetHack на Python?

Я пытаюсь написать функцию Python, которая возвращает то же значение фазы луны, что и в игре NetHack. Это можно найти в файле hacklib.c . Я попытался просто скопировать соответствующую функцию из кода NetHack, но я не верю, что получаю правильные результаты. Функция, которую я написал, – phase_of_the_moon() . Функции position() и phase() , я нашел […]

Почему LD_PRELOAD не работает с Python?

Использование интерполяции функций для open() с Python, похоже, не работает после первых нескольких вызовов. Я подозреваю, что Python делает какую-то инициализацию, или что-то временно обходит мою функцию. Здесь open вызов явно подключен: $ cat a hi $ LD_PRELOAD=./libinterpose_python.so cat a sandbox_init() open() hi Здесь это происходит один раз во время инициализации Python: $ LD_PRELOAD=./libinterpose_python.so python […]

Python - лучший язык программирования в мире.