CN107894890A - 一种基于Python编程的自定义算法动态导入实现方法 - Google Patents

一种基于Python编程的自定义算法动态导入实现方法 Download PDF

Info

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
Application number
CN201711345883.XA
Other languages
English (en)
Inventor
舒云
何涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Electric Co Ltd
Original Assignee
Sichuan Changhong Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Changhong Electric Co Ltd filed Critical Sichuan Changhong Electric Co Ltd
Priority to CN201711345883.XA priority Critical patent/CN107894890A/zh
Publication of CN107894890A publication Critical patent/CN107894890A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target 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编程的自定义算法动态导入实现方法
技术领域
本发明涉及算法处理,具体涉及种基于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编码文件。
CN201711345883.XA 2017-12-15 2017-12-15 一种基于Python编程的自定义算法动态导入实现方法 Pending CN107894890A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 克拉玛依红有软件有限责任公司 数据挖掘算法动态插入到数据挖掘平台的方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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