I wanted to create a simple example of reading a table in Python and pass it to C+, but I'm doing something wrong or there is a memory issue. When the table gets to C+ and I print out column names it also prints out a lot of junk and what looks like pydocs. Let me know if you need any more info. Thanks!
demo.py
import numpy
from psy.automl import cyth
import pandas as pd
from absl import app
def main(argv):
sup = pd.DataFrame({
'int': [1, 2],
'str': ['a', 'b']
})
table = pa.Table.from_pandas(sup)
cyth.c_t(table)
cyth.pyx
import pandas as pd
import pyarrow as pa
from pyarrow.lib cimport *
cdef extern from "cyth.h" namespace "psy":
void t(shared_ptr[CTable])
def c_t(obj):
# These print work
# for i in range(obj.num_columns):
# print(obj.column(i).name
cdef shared_ptr[CTable] tbl = pyarrow_unwrap_table(obj)
t(tbl)
cyth.h
#include <iostream>
#include <string>
#include "arrow/api.h"
#include "arrow/python/api.h"
#include "Python.h"
namespace psy {
void t(std::shared_ptr<arrow::Table> pytable) {
// This works
std::cout << "NUM" << pytable->num_columns();
// This prints a lot of garbage
for(int i = 0; i < pytable->num_columns(); i++) {
std::cout << pytable->column(i)->name();
}
}
}
Environment: clang6
Reporter: Joseph Toth
Assignee: Antoine Pitrou / @pitrou
Related issues:
PRs and other links:
Note: This issue was originally created as ARROW-2787. Please see the migration documentation for further details.
I wanted to create a simple example of reading a table in Python and pass it to C+, but I'm doing something wrong or there is a memory issue. When the table gets to C+ and I print out column names it also prints out a lot of junk and what looks like pydocs. Let me know if you need any more info. Thanks!
demo.py
cyth.pyx
cyth.h
Environment: clang6
Reporter: Joseph Toth
Assignee: Antoine Pitrou / @pitrou
Related issues:
PRs and other links:
Note: This issue was originally created as ARROW-2787. Please see the migration documentation for further details.