大佬教程收集整理的这篇文章主要介绍了c – try..catch宏包装器等效于cython,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#-- client.pxd --- cdef extern from "rpc/RpcService.h": cdef cppclass RpcServiceClient: void getProject(ProjectT&,Guid& id) nogil except + cdef extern from "client.h": cdef cppclass Client: RpcServiceClient proxy() nogil cdef Client* getClient() nogil except + #-- module.pxd --- cdef inline Client* conn() except *: # wrap getClient() here with try..except if the # connection was never established cpdef inline get_project(Guid& guid): cdef: ProjectT projT # cpp object Project project # cdef python class # this would catch fine in my conn() wrapper # if the connection had never been established # the first time. But if the existing connection # suddenly drops,it will be getProject() that # raises the exception conn().proxy().getProject(projT,guid) project = initProject(projT) return project
关于如何将所有这些C函数包装成try_call()之类的任何提示?
如果这是纯python,我可以简单地做这样的事情:
def try_call(fn,*args,**kwargs): # try fn(*args,**kwargs) and handle try_call(conn().proxy().getProject,projT,guid)
但显然我不能将这些cython函数作为python对象传递(或者我可以吗?).
或者C中的这样的事情:
TRY_CALL_OR_RECONNECT conn().proxy().getProject(projT,guid) END_TRY_CALL_OR_RECONNECT
def try_wrapper(x): try: x() except: doSomethingElse() @try_wrapper def defYouWantToWrap(): doSomething()
这可能不是最好的教程,但希望它可以指出你正确的方向
以上是大佬教程为你收集整理的c – try..catch宏包装器等效于cython全部内容,希望文章能够帮你解决c – try..catch宏包装器等效于cython所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。