在python中从abrubt进程终止中解救数据。

faultguard的Python项目详细描述


faultguard

Build StatusGitHub licensepypi version

在python中从abrubt进程终止中解救数据。

简介

如果一个进程遇到了例如分段错误,它将无法执行进一步的操作来恢复。此外,在分割错误之后,进程的内存被认为是不一致的。一旦一个项目依赖于第三方库,这种错误的出现就失控了。因此,为了实现重要数据的崩溃处理程序,需要一种在进程突然终止后准备挽救数据的方法。此模块使用python模块pickle、multiprocessing和collections来序列化和反序列化各种类型的数据,并提供类似于dictory的数据类型来保存和恢复独立进程的地址空间中的重要数据。

这个模块非常简单,尽管它的功能非常可重用。如果您精通这个主题,那么您将受到鼓励,可以查看源代码并通过(文档丰富的;)pull请求进行贡献。

安装

此模块可以通过PIP获得,也可以通过setup.py手动安装。

光盘机

本模块的重点是依赖本机库并具有重要数据的项目。它不会提供任何帮助您修复分段错误,您应该感到鼓舞,了解Python模块“Fulththand”和使用“GDM”来修复您自己的代码中的错误。如果您设法在fault guard数据字典中生成一个分段错误,从而破坏保护进程,那么解救当然不会起作用。此模块是附加的安全选项,不是不负责任编程的借口!

示例

它遵循此模块的最小工作示例:

importfaultguardimportnumpyasnpdeflaunch(faultguard_data,args):"""    Demo software main method    :param faultguard_data: Faultguard data dictionary    :param args: Data passed from faultguard.start.    """print("Launching demo")# Some important dataimportant_data_1=np.array([1,2,3])important_data_2=args[0]+" "+args[1]# Some dummy important data manipulationforiinrange(10):important_data_1[i%3]=iimportant_data_2+=str(i)print("important_data_1:",important_data_1)print("important_data_2:",important_data_2)# Sending important data to faultguard processfaultguard_data["important_data_1"]=important_data_1faultguard_data["important_data_2"]=important_data_2# Generate segfaultifi==7:importctypesctypes.string_at(0)defrescue(faultguard_data,exit_code,args):"""    Demo rescue handler    :param faultguard_data: Faultguard data dictionary    :param exit_code: Exit code of occured fault.    :param args: Data passed from faultguard.start.    """print("Fault occured. Exit code: {}. Rescued data:".format(exit_code))# Check if fault occurs before data was initializedif"important_data_1"notinfaultguard_dataor"important_data_2"notinfaultguard_data:return# Restore dataimportant_data_1=faultguard_data["important_data_1"]important_data_2=faultguard_data["important_data_2"]# You might need to assign the class here by important_data_1.__class__ = ...print("important_data_1:",important_data_1)print("important_data_2:",important_data_2)defmain():faultguard.start(launch,rescue,args=("Hello","World"))if__name__=="__main__":main()

学分

这个项目最初是为明斯特大学的一个硬件项目开发的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在不影响项目中其他jtabbed窗格的情况下更改jtabbed窗格所选选项卡的颜色   java域模型映射器应该是静态的吗?   java使用javamail api在outllok中打开包含电子邮件作为附件的附加电子邮件   java Swagger扩展SwaggerSpecFilter   Java泛型数组类强制转换异常   java如何使用opencv计算人脸识别的百分比格式预测置信度?   jakarta ee Java ee:如何从web模块访问本地EJB?   java如何将变量传递到同一个包中的另一个类中   通过FTP在Java中上传文件   java似乎无法在JFrame中更新我的GridLayout。现在它增加了越来越多的帧,我只想更新它   java我的代码中有什么可以识别为病毒?   java在Android Studio中添加延迟计时器   javascript值更改事件并单击事件   java如何优雅地处理更新版本中的数据库升级?   java如何在Intellij Idea中切换到其他git帐户   无效的Java正则表达式   java使用相同的方法向字符串或其他对象的ArrayList添加元素   使用数组作为参数的java   java ASM拦截在方法外部进行的字段访问