Articles of punteros

Python, ¿cómo pasar un argumento a un parámetro de puntero de función?

Acabo de empezar a aprender Python y descubrí que puedo pasar una función como parámetro de otra función. Ahora, si llamo a foo(bar()) , no pasará como un puntero de función sino el valor de retorno de la función utilizada. Llamar a foo(bar) pasará la función, pero de esta manera no puedo pasar ningún argumento […]

Python equivalente de punteros

En python todo funciona por referencia: >>> a = 1 >>> d = {‘a’:a} >>> d[‘a’] 1 >>> a = 2 >>> d[‘a’] 1 Quiero algo como esto >>> a = 1 >>> d = {‘a’:magical pointer to a} >>> d[‘a’] 1 >>> a = 2 >>> d[‘a’] 2 ¿Qué sustituirías por un puntero mágico […]

Punteros y matrices en Python ctypes

Tengo una DLL que contiene una función C con un prototipo como este: int c_read_block(uint32 addr, uint32 *buf, uint32 num); Quiero llamarlo desde Python usando ctypes. La función espera un puntero a un fragmento de memoria, en el que escribirá los resultados. No sé cómo construir y pasar un trozo de memoria así. La documentación […]

Accediendo al contenido de una matriz de variables con ctypes.

Uso ctypes para acceder a un archivo que lee la función C en python. Como los datos leídos son enormes y desconocidos en tamaño, uso **float en C. int read_file(const char *file,int *n_,int *m_,float **data_) {…} Las funciones mallocs una matriz 2d, llamada data , del tamaño apropiado, aquí n , y copia los valores […]

ctypes puntero en medio de una matriz numpy

Sé cómo obtener un puntero de ctypes al principio de una matriz numpy: a = np.arange(10000, dtype=np.double) p = a.ctypes.data_as(POINTER(c_double)) p.contents c_double(0.0) sin embargo, necesito pasar el puntero, digamos, al elemento 100, sin copiar la matriz . Debe haber una manera fácil de hacerlo pero no se puede encontrar. Cualquier sugerencia apreciada.

¿Cómo asignar una dirección de memoria a una variable en Python?

Aquí está el escenario: Me olvido tontamente de asignar el objeto devuelto a una variable: >>> open(“random_file.txt”) ¿Hay una manera de asignar directamente la dirección de memoria a una variable? Algo más o menos equivalente a int *ptr; *ptr = 0x158f780; Puntos de contraataque: En este caso, simplemente puedo descartar el objeto: el archivo se […]

Accediendo a la estructura subyacente de un PyObject

Estoy trabajando para crear una extensión de python c, pero tengo dificultades para encontrar documentación sobre lo que quiero hacer. Básicamente, quiero crear un puntero a un cstruct y poder tener acceso a ese puntero. El código de ejemplo está abajo. Cualquier ayuda sería apreciada. typedef struct{ int x; int y; } Point; typedef struct […]

¿Hay alguna forma de hacer una referencia suave u objetos tipo puntero utilizando matrices Numpy?

Me preguntaba si hay una manera de referir datos de muchas matrices diferentes a una matriz, pero sin copiarlos. Ejemplo: import numpy as np a = np.array([2,3,4,5,6]) b = np.array([5,6,7,8]) c = np.ndarray([len(a)+len(b)]) offset = 0 c[offset:offset+len(a)] = a offset += len(a) c[offset:offset+len(b)] = b Sin embargo, en el ejemplo anterior, c es una nueva […]

error de lanzamiento de create_string_buffer TypeError: str / bytes esperado en lugar de la instancia de str

Estoy probando este simple ejemplo de ctypes y obtengo el error mencionado >>> from ctypes import create_string_buffer >>> str = create_string_buffer(“hello”) Traceback (most recent call last): File “”, line 1, in File “C:\Python32\lib\ctypes\__init__.py”, line 59, in create_string_buffer buf.value = init TypeError: str/bytes expected instead of str instance ¿Alguien sabe qué estoy haciendo mal? En la […]

Pickle Cython Class con punteros en C

Estoy tratando de escribir un __reduce__() para una clase de cython que contiene punteros C, pero hasta ahora he encontrado muy poca información sobre la mejor manera de hacerlo. Hay __reduce__() ejemplos en torno a cómo escribir correctamente un __reduce__() cuando se usan matrices numpy como datos de miembros. Me gustaría mantenerme alejado de los […]