CN107894890A - 一种基于Python编程的自定义算法动态导入实现方法 - Google Patents
一种基于Python编程的自定义算法动态导入实现方法 Download PDFInfo
- Publication number
- CN107894890A CN107894890A CN201711345883.XA CN201711345883A CN107894890A CN 107894890 A CN107894890 A CN 107894890A CN 201711345883 A CN201711345883 A CN 201711345883A CN 107894890 A CN107894890 A CN 107894890A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- imports
- file
- python
- custom
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及算法处理,其针对传统技术中云端系统不能满足客户的自定义算法处理数据的需求的问题,提出一种基于Python编程的自定义算法动态导入实现方法,可供用户动态添加自定义算法。该方法包括以下步骤:a.定义新的算法存储数据类型,将实际的算法程序内容改变为算法路径;b.公开算法文件输入输出要求,将算法程序视为黑盒,系统仅提供输入,接收输出;c.开放Django文件传输接口用于接收用户自定义的算法文件并存储;d.记录算法存储路径到存储数据类型中;e.在需要调用算法时,动态导入算法程序,将数据输入算法进行处理,输出处理结果。本发明适用于算法自定义和动态调用。
Description
技术领域
本发明涉及算法处理,具体涉及种基于Python编程的自定义算法动态导入实现方法。
背景技术
目前,随着公众市场的不断开拓,行业客户对项目需求趋向愈发个性化,在这一环境下,“定制”或者说“个性化”成为一个项目能否打动客户的关键。以往B/S系统架构中,web端多为提供固定的公用服务,难以满足客户的自定义需求。尤其是在数据分析这一领域,针对不同的数据,处理方式算法存在明显差异,客户需求的是能够自主定义算法的服务,而目前的云端系统不能满足客户的自定义算法处理数据的需求。
发明内容
本发明所要解决的技术问题是:针对传统技术中云端系统不能满足客户的自定义算法处理数据的需求的问题,提出一种基于Python编程的自定义算法动态导入实现方法,可供用户动态添加自定义算法。
本发明解决上述技术问题采用的技术方案是:
一种基于Python编程的自定义算法动态导入实现方法,包括以下步骤:
a.定义新的算法存储数据类型,将实际的算法程序内容改变为算法路径;
b.公开算法文件输入输出要求,将算法程序视为黑盒,系统仅提供输入,接收输出;
c.开放Django文件传输接口用于接收用户自定义的算法文件并存储;
d.记录算法存储路径到存储数据类型中;
e.在需要调用算法时,动态导入算法程序,将数据输入算法进行处理,输出处理结果。
作为进一步优化,步骤c中,在开放Django文件传输接口后,由后台管理员通过Django框架的xadmin管理平台进行算法文件上传并存储。
作为进一步优化,步骤b中,将算法程序视为黑盒,系统仅关注算法的输入与输出,算法内部实现由用户自主定义。
作为进一步优化,所述算法文件为Python编码文件。
本发明的有益效果是:通过对算法存储类型的重新定义,将实际的算法程序内容改变为算法路径,算法内容由用户自定义,并利用Python动态导入特性以及Django文件传输系统对用户上传的算法文件进行存储和记录存储路径,系统通过调用算法完成数据处理;
通过本发明可以为系统用户(特别是对数据处理算法有特别需求的系统用户)提供了在不修改已运行系统代码前提下动态的更新自定义算法的需求。
具体实施方式
针对传统技术中云端系统不能满足客户的自定义算法处理数据的需求的问题,本发明旨在提出一种基于Python编程的自定义算法动态导入实现方法,可供用户动态添加自定义算法。
本发明的自定义算法导入功能的实现包括以下几个部分:
1、算法数据类型定义:算法不再写死在程序中,而是新设计一种数据类型存储算法;
2、算法结构定义:保证不同的算法具有相同的输入与输出,以便系统调用;
3、算法动态调用:针对新的数据结构的普适性算法调用流程;
4、文件传输与存储:利用Django框架的文件传输相关功能实现。
在具体实现上,本发明包括:首先,定义新的算法存储数据类型,由实际的算法程序内容改变为算法路径。公开算法文件输入输出要求,将算法程序视为黑盒,系统仅提供输入,接收输出。开放Django文件传输接口用于接收用户自定义算法文件并存储,记录路径到存储数据类型中。在需要调用算法时,动态导入算法程序,将数据输入算法进行处理,输出处理结果。
其中,算法数据类型定义如下:
名称 | 类型 | 备注 |
Id | Int | 主键 |
Name | Varchar | 算法名称 |
Path | Varchar | 算法文件路径 |
Is_active | Tinyint | 是否可用 |
Add_time | Datetime | 生成时间 |
Organization_id | Int | 外键,算法所属组织id |
User_id | Int | 外键,算法创建者id |
算法文件需满足以下条件:
·python编码文件;
·py文件名随意,需包含Pretreatment类作为算法类,算法类中具有do_pretreatment方法;
·方法接收参数为series:接收坐标点y轴数据list;label:接收坐标点x轴数据list;
·方法返回:处理后的series数据list,以及处理后的label数据list;
算法动态调用:
基于Python动态导入特性,解析数据结构中的path属性,通过以下代码动态调用算法方法:
……
obj=__import__(path)#动态导入py文件
pretreatment=obj.Pretreatment().do_pretreatment#将算法方法赋值给本地变量
new_series,new_label=pretreatment(old_series,old_label)#传入数据得到处理结果
……
文件传输与存储:
由于是传入第三方文件,故上传权限仅提供给后台管理员。后台管理员通过Django框架的xadmin管理平台进行文件上传。
Claims (4)
1.一种基于Python编程的自定义算法动态导入实现方法,其特征在于,包括以下步骤:
a.定义新的算法存储数据类型,将实际的算法程序内容改变为算法路径;
b.公开算法文件输入输出要求,将算法程序视为黑盒,系统仅提供输入,接收输出;
c.开放Django文件传输接口用于接收用户自定义的算法文件并存储;
d.记录算法存储路径到存储数据类型中;
e.在需要调用算法时,动态导入算法程序,将数据输入算法进行处理,输出处理结果。
2.如权利要求1所述的一种基于Python编程的自定义算法动态导入实现方法,其特征在于,步骤c中,在开放Django文件传输接口后,由后台管理员通过Django框架的xadmin管理平台进行算法文件上传并存储。
3.如权利要求1所述的一种基于Python编程的自定义算法动态导入实现方法,其特征在于,步骤b中,将算法程序视为黑盒,系统仅关注算法的输入与输出,算法内部实现由用户自主定义。
4.如权利要求1所述的一种基于Python编程的自定义算法动态导入实现方法,其特征在于,所述算法文件为Python编码文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711345883.XA CN107894890A (zh) | 2017-12-15 | 2017-12-15 | 一种基于Python编程的自定义算法动态导入实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711345883.XA CN107894890A (zh) | 2017-12-15 | 2017-12-15 | 一种基于Python编程的自定义算法动态导入实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107894890A true CN107894890A (zh) | 2018-04-10 |
Family
ID=61807914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711345883.XA Pending CN107894890A (zh) | 2017-12-15 | 2017-12-15 | 一种基于Python编程的自定义算法动态导入实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107894890A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359153A (zh) * | 2018-12-27 | 2019-02-19 | 杭州全维技术股份有限公司 | 基于django数据库改变数据显示内容的方法 |
CN112579199A (zh) * | 2020-12-15 | 2021-03-30 | 北京动力机械研究所 | 基于开放式数据平台的处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207858A (zh) * | 2010-03-31 | 2011-10-05 | 北京新洲协同软件技术有限公司 | 算法容器引入用户自定义算法的方法 |
US20130205192A1 (en) * | 2011-09-23 | 2013-08-08 | The Mathworks, Inc. | Text import tool for a technical computing environment |
CN104346376A (zh) * | 2013-07-31 | 2015-02-11 | 克拉玛依红有软件有限责任公司 | 数据挖掘算法动态插入到数据挖掘平台的方法及系统 |
-
2017
- 2017-12-15 CN CN201711345883.XA patent/CN107894890A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207858A (zh) * | 2010-03-31 | 2011-10-05 | 北京新洲协同软件技术有限公司 | 算法容器引入用户自定义算法的方法 |
US20130205192A1 (en) * | 2011-09-23 | 2013-08-08 | The Mathworks, Inc. | Text import tool for a technical computing environment |
CN104346376A (zh) * | 2013-07-31 | 2015-02-11 | 克拉玛依红有软件有限责任公司 | 数据挖掘算法动态插入到数据挖掘平台的方法及系统 |
Non-Patent Citations (2)
Title |
---|
范桂飓: "Python Module_sys/random", 《HTTPS://WWW.ALIYUN.COM/ACTIVITY/618/INDEX?SCM=20140722.2018.8.2000)》 * |
虫师: "python+django快速实现文件上传", 《HTTPS://WWW.JB51.NET/ARTICLE/95574.HTM》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359153A (zh) * | 2018-12-27 | 2019-02-19 | 杭州全维技术股份有限公司 | 基于django数据库改变数据显示内容的方法 |
CN112579199A (zh) * | 2020-12-15 | 2021-03-30 | 北京动力机械研究所 | 基于开放式数据平台的处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052681A (zh) | 一种关系型数据库间结构化数据的同步方法及系统 | |
CN102609255B (zh) | 一种Spring IOC配置文件的生成方法 | |
CN107678776A (zh) | 多模块版本依赖关系构建方法、装置、服务器和存储介质 | |
CN106875156A (zh) | 一种通用化智能审核平台及其审核方法 | |
CN104966239A (zh) | 一种基于规则引擎的智能核保平台 | |
CN101000677A (zh) | 营销业务推荐的匹配方法及系统 | |
CN103488697B (zh) | 能自动收集和交换碎片化商业信息的系统及移动终端 | |
CN107247799A (zh) | 兼容多种大数据存储的数据处理方法、系统及其建模方法 | |
CN106951552A (zh) | 一种基于Hadoop的用户行为数据处理方法 | |
CN107894890A (zh) | 一种基于Python编程的自定义算法动态导入实现方法 | |
CN112379884B (zh) | 基于Spark和并行内存计算的流程引擎实现方法及系统 | |
CN107103064A (zh) | 数据统计方法及装置 | |
CN111695326B (zh) | Xbrl报告核对方法及装置 | |
CN103425771A (zh) | 一种数据正则表达式的挖掘方法及装置 | |
CN109116828A (zh) | 一种控制器中模型代码配置方法和装置 | |
CN112364046A (zh) | 一种基于知识图谱的异构环境下主数据管理方法 | |
CN105069096A (zh) | 一种自定义表单的架构方法及架构系统 | |
CN104679793A (zh) | 一种基于动态发票模板的发票开具系统 | |
CN110007912A (zh) | 一种数据共享接口的可视化配置实现系统及方法 | |
CN109299913A (zh) | 员工薪资方案生成方法及装置 | |
CN107403012A (zh) | 一种数据交换方法及装置 | |
CN107426017A (zh) | 一种通过采集交换机网络流量进行数据分析的方法 | |
CN103150164B (zh) | 一种事务规则驱动的敏捷sowf架构方法 | |
CN107943482A (zh) | 基于规则的流式数据处理方法统一监控平台 | |
CN106384292A (zh) | 社交网络用户关系采集系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180410 |