Как получить значения из структуры C в python?

# #c #python-3.x #go

Вопрос:

Поэтому я создал код golang, чтобы передать значение в структуру C, а затем вернуть его в указатель, чтобы я мог получить значение в py. Но могу ли я получить значения из структуры C в py? Если да, то как я могу? Моя главная цель-передать несколько значений из go в структуру C, а затем получить эти значения в py. Кроме того, как правильно это сделать без каких-либо утечек памяти?

Вот мой код перехода:

 package main

/*
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

typedef struct Resp {
    char *response;
    char *responsetwo;
} Resp;

void fill(Resp *r) {
   printf("Original value: %sn", r->response);
}
*/
import "C"
import (
    "unsafe"
)

func body_string(body string, body_two string) unsafe.Pointer {
    sb := C.CString(body)
    sb_two := C.CString(body_two)

    // adding it to the C struct
    return amp;C.Resp{
        response: sb,
        responsetwo: sb_two,
    }
}
 

Я не уверен, что это наиболее эффективный способ, но подходит ли это для больших текстовых значений? Спасибо.

Комментарии:

1. Как вы собираетесь сделать это на Python? По памяти? Из досье?

2. Нет, не из досье. По памяти.

3. каждая реализация python содержит пояснения о том, как использовать ее FFI.

4. Почему на Земле (или в космосе, если на то пошло) вы используете Go в качестве посредника между C и Python? (Используйте cpython, и вся проблема исчезнет.)

5. Я пытаюсь передать несколько значений go в python через привязки c без каких-либо утечек памяти.