You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@arrow.apache.org by "Joseph Toth (JIRA)" <ji...@apache.org> on 2018/07/03 16:26:00 UTC

[jira] [Created] (ARROW-2787) Memory Issue passing table from python to c++ via cython

Joseph Toth created ARROW-2787:
----------------------------------

             Summary: Memory Issue passing table from python to c++ via cython
                 Key: ARROW-2787
                 URL: https://issues.apache.org/jira/browse/ARROW-2787
             Project: Apache Arrow
          Issue Type: Bug
          Components: Integration
    Affects Versions: 0.9.0
         Environment: clang6
            Reporter: Joseph Toth


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();??
?? }??
??}??

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)