Свързани публикации 'cython'
Подобряване на производителността на Python
Сигурен съм, че всеки от нас иска да комбинира експресивността на Python с производителността и контрола на C/C++ и да получи страхотни резултати. Така че нека да разгледаме как можем да постигнем част от това с Cython и PyPy .
По-долу е наивна функция за броене на делител, реализирана в Python:
Профилиране
Сега нека направим малко сравнителен анализ и да видим как се изпълнява горната функция. За да направим това, ще се възползваме от функцията iPython magic : %timeit
In..
Извикване на C++ функции от Cython (препратки, указатели и масиви)
Cython е много полезен език за обвиване на C++ за Python. В тази публикация в блога бих искал да дам примери за извикване на C++ функции в Cython по различни начини.
Първо ще дам примери за предаване на цяло число към C++ и след това ще продължа с примери за предаване на масив.
Тук давам C++ функции, които приемат входни данни чрез препратка, указател, препратка към указател и указател към указател.
Ето функциите на Cython, които обвиват C++ функциите по-горе. Имайте предвид, че..
Свързани въпроси 'cython'
Къде се компилира cython pyximport?
Моят cython / pyximport код работи много добре на файлова система за четене/запис.
Но (за целите на тестването) трябва да го изпробвам на файлова система само за четене .
Как да променя временната директория на cython / pyximport ? (къде...
1862 изгледи
schedule
20.09.2022
Предаване на масив Numpy към C 2D масив във формат на указател към указател с помощта на Cython
Имам C код, който в момента включвам в Python с помощта на Cython. Кодът C се занимава с 2D масиви във формат указател към указател, т.е. разпределянето на памет за масив 3x3 се извършва по следния начин
float **A = (float...
410 изгледи
schedule
25.09.2022
Правя моя cython код по-ефективен
Написах програма на Python, която се опитвам да цитонизирам. Има ли някакво предложение как да направите for-цикъла по-ефективен, тъй като това отнема 99% от времето?
Това е for-цикълът:
for i in range(l):
b1[i] =...
270 изгледи
schedule
21.09.2022
Използвайте Cython за обвиване на C/C++-програма в зависимост от множество библиотеки
Имам голям C/C++ проект, който обикновено просто изграждам като самостоятелен изпълним файл. Освен това изисква някои библиотеки (системни библиотеки като pthread, но също и MKL от intel например), които посочвам при компилирането на проекта.
Сега...
239 изгледи
schedule
28.09.2022
Cython Install GCC грешка
Опитвам се да инсталирам Cython на малък VPS, работещ с Ubuntu Server. Направих
sudo apt-get install gcc
и тогава
python setup.py install
В директорията на Cython, но получавам тази странна грешка.
running install
running build...
15709 изгледи
schedule
16.10.2022
структура на проекта за обвиване на много c++ класове в cython в един споделен обект
Намерих частични отговори между документите, пощенските списъци и този въпрос тук , но исках да получа по-директен отговор, насочен към моята специфика...
Уча cython, като се опитвам да обвия малки части, малко по малко, от библиотека, която вече...
4997 изгледи
schedule
07.11.2022
Cython и конструктори на класове
Имам проблем с използването на Cython на конструктори по подразбиране.
Моят C++ клас Node е следният
Node.h
class Node
{
public:
Node()
{
std::cerr << "calling no arg constructor" << std::endl;...
4647 изгледи
schedule
23.11.2023
странен срив на разширението на cython, грешка в cython?
Може ли някой да обясни защо това разширение срива Python? Полудявах от това от много часове и не мога да го обясня.
Опростих кода си, така че да показва само редовете, необходими за възпроизвеждане на срива:
Имам много прост C++ клас в...
323 изгледи
schedule
11.11.2022
Използване на Cython за обвиване на библиотека, която обвива друга библиотека
Целта ми е да използвам Cython, за да обвия библиотеката Apohenia , C библиотека за научни изчисления.
Това е усилие да не се възстановява колелото и самата Apophenia се опитва да направи същото, като базира своите структури на тези от GNU...
523 изгледи
schedule
26.11.2023
C / Cython: Първоначално съдържание на разпределение на паметта malloc
Код:
cpdef values(int n):
cdef size_t i
cdef double * v = <double *> malloc(sizeof(double) * n)
if v is NULL:
abort()
for i in range(n):
print v[i]
Изход:
>>> values(5)
1.06816855917e-306...
356 изгледи
schedule
28.11.2022
Cython setup.py за няколко .pyx
Бих искал да цитонизирам по-бързо. Кодът за един .pyx е
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("MyFile.pyx")
)
Ами ако искам да цитонизирам
няколко файла с ext .pyx,...
17374 изгледи
schedule
02.12.2022
Cython: Динамично свързване с dll/so
Работя с API, който се разпространява като dll/so файл, който трябва да свържа динамично с моята програма на python. За да постигна това, искам да използвам Cython.
В миналото успях да се свържа статично с dll. Това работи добре, с изключение на...
930 изгледи
schedule
03.12.2023
cython срещу ctypes скорост на изпълнение на функцията
Имам прост план за моята програма: направете всички входни анализи и предварителна обработка на данни с Python и след това предайте много структури и извикайте ЕДНАЖД функцията за разбиване на числа, която ще напиша на C. Тук идва въпросът ми: какво...
2151 изгледи
schedule
06.12.2023
Cython: Преобразувайте изглед на паметта в масив NumPy
Как да конвертирате въведен изглед на паметта в масив NumPy в cython? Документите имат
cimport numpy as np
import numpy as np
numpy_array = np.asarray(<np.int32_t[:10, :10]> my_pointer)
Взех това за моя случай...
14004 изгледи
schedule
03.12.2023
Изявлението cdef не е разрешено тук за структура
Имам прост Astruct.pyx с дефиниция на структура (Astruct.pxd):
cdef struct A:
int x
int y
int z
И функция на Cython, която го използва (struct_test.pyx):
from random import randint
from Astruct cimport A
def do():
N =...
9352 изгледи
schedule
09.11.2023
cython/python: как да хванете като изключение външна функция, която излиза вместо да се връща
Използвам Cython за свързване на външна C функция. Функцията (научен код със 100k кодови реда) вътрешно проверява за невалидни условия и „излиза“, ако възникнат.
Как мога да накарам Cython да открие и предизвика изключение, когато външната функция...
692 изгледи
schedule
18.11.2022
Потенциално изтичане на памет при преобразуване на широк char в низ на Python
Имам следния код в cython във файла pyx, който преобразува wchar_t* в низ на python (unicode)
// Целият код по-долу е Python 2.7.4
cdef wc_to_pystr(wchar_t *buf):
if buf == NULL:
return None
cdef size_t buflen
buflen =...
280 изгледи
schedule
27.12.2023
Как да се възползвате от C++ шаблони в Cython
Имам C++ библиотека, която е шаблонизирана - например функция може да бъде предадена като параметър указател на плаващи числа или цели числа. Извиквам това с помощта на код на Cython, където указателите са декларирани с помощта на изглед на паметта:...
49 изгледи
schedule
24.11.2022
Предаване на ограничен метод в Cython като аргумент
Опитвам се да опаковам някакъв C++ код в Cython и се сблъсках с проблем при опит да предам метод от клас като аргумент към функция.
Не знам дали го прави по-ясно, но клас A представлява статистически модел (така че myAMethod използва не само...
646 изгледи
schedule
02.12.2023
Използвайте Cython, за да свържете python към споделена библиотека в Mac OS
Опитвам се да се интегрирам с други, които ми дават споделена библиотека само с .so файлове и .h файлове. В mac os споделената библиотека трябва да е .dylib , но не знам как да настроя средата или друго начин за решаване на проблемите Когато...
992 изгледи
schedule
19.10.2022