MCPcopy Create free account
hub / github.com/bytedance/InfiniStore / as_pyarray

Function as_pyarray

src/pybind.cpp:24–34  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22// as_pyarray is a helper function to convert a C++ sequence to a numpy array and zero-copy
23template <typename Sequence>
24inline py::array_t<typename Sequence::value_type> as_pyarray(Sequence &&seq) {
25 // Move entire object to heap. Memory handled via Python capsule
26 Sequence *seq_ptr = new Sequence(std::move(seq));
27 // Capsule shall delete sequence object when done
28 auto capsule = py::capsule(seq_ptr, [](void *p) { delete reinterpret_cast<Sequence *>(p); });
29
30 return py::array(static_cast<py::ssize_t>(seq_ptr->size()), // shape of array
31 seq_ptr->data(), // c-style contiguous strides for Sequence
32 capsule // numpy array references this parent
33 );
34}
35
36PYBIND11_MODULE(_infinistore, m) {
37 // client side

Callers 1

PYBIND11_MODULEFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected