Cython是否有办法打包malloc'd值以便它们获得GC'd?Cython是否有类似std :: unique_ptr的东西?
2
A
回答
0
PyCapsule是有点难看,因为你必须定义每个类的析构函数,但它的伎俩:
from cpython cimport pycapsule
cdef const char* CAPNAME = "ExtClassName"
cdef void del_capsule(object o):
cdef ExtClass* cobject = <ExtClass*>pycapsule.PyCapsule_GetPointer(o, CAPNAME)
del cobject
def mk_cpp_object():
return pycapsule.PyCapsule_New(cp, CAPNAME, del_capsule)
很可能有办法通过用C定义++“自动更”这样做的模板制造自己的破坏者。然后,该类型可以在cython中实例化。
0
我这个打算:
cdef class AutoPtr:
cdef void* _ptr
def __cinit__(self): self._ptr = NULL
def __dealloc__(self):
if self._ptr: mem.PyMem_Free(self._ptr) # or whatever free function is relevant to your codebase
self._ptr = NULL
cdef AutoPtr mkauto(void* ptr):
cdef AutoPtr wrapper = AutoPtr()
wrapper._ptr = ptr
return wrapper
我认为__cinit__
力量它的参数Python对象,所以这样的事情甚至不会编译:
cdef class AutoPtr:
cdef void* _ptr
def __cinit__(self, void* ptr): self._ptr = ptr
def __dealloc__(self): pass # etc
这里有一个论坛的帖子为此:https://mail.python.org/pipermail/cython-devel/2012-June/002734.html
鉴于Cython是什么,我假设有一个内置的解除分配包装,我只是不知道。
相关问题
- 1. 在C++ 11之前是否有类似于std :: function的东西?
- 2. MSVC是否有类似__builtin_va_arg_pack的东西?
- 3. 类似的东西?
- 4. 是否有类似Unity中的Update void的东西?
- 5. Django是否有类似“数据库中间件”的东西?
- 6. Swift是否有类似C++引用的东西?
- 7. DevExpress是否有类似于Syncfusion BannerTextProvider的东西?
- 8. Actionscript是否有类似魔术常量的东西?
- 9. 是否有LARGEST_INTEGER宏或类似的东西? (C)
- 10. SQL Server 2008中是否有与Oracle Analytics类似的东西?
- 11. JUnit 3是否有类似于@BeforeClass的东西?
- 12. MEAN.js是否有类似于Sails.js蓝图的东西?
- 13. Appengine与Go:是否有一个http.Handle prehook或类似的东西?
- 14. 在Java中是否有类似于WebClient.DownloadString的东西?
- 15. Laravel中是否有任何JAXB类似的东西?
- 16. 红宝石是否有类似buildout或virtualenv的东西?
- 17. C#中是否有类似于java.lang.Class的东西?
- 18. 是否有类似到Android的东西:stateNotNeeded为WP应用
- 19. 在Windows Azure上是否有类似Assembly Binding Log Viewer的东西?
- 20. Qt中是否有类似.NET Reflector的东西?
- 21. 除了在jQuery中是否有类似的东西?
- 22. Java是否有类似JRoulette组件的东西?
- 23. Objective-C中是否有类似Java Comparable接口的东西?
- 24. 是否有类似WPF的DataTemplates东西在GTK /格莱德?
- 25. 在C++(或C++ 11)中是否有类似于c#的东西?
- 26. javascript是否有类似try catch的东西?
- 27. Perl中是否有类似Python Itertools的东西?
- 28. FireMonkey是否有与GetSystemMetrics类似的东西?
- 29. 模型中是否有与application_helper或application_controller类似的东西?
- 30. .Net中是否有类似ConcurrentSet的东西?