基于大数据智能平台的混合调用方法及装置与流程
未命名
09-22
阅读:75
评论:0

1.本技术涉及数据调用技术领域,更具体地,涉及一种基于大数据智能平台的混合调用方法及装置。
背景技术:
2.随着人工智能技术的发展,人工智能的应用已经深入到人们生活与工作的方方面面,包括烟草制造业。在烟草大数据智能平台开发过程中,人工智能算法往往采用python语言编写,而基于浏览器的应用系统往往采用javascript语言编写。在基于浏览器的应用系统中调用人工智能算法,不可避免的涉及到python与javascript混合调用的问题。
3.本发明针对烟草大数据智能平台中的python与javascript混合调用问题,提出了一种多模式python/javascript混合调用方式,有效的解决了烟草大数据智能平台中利用多种语言的易用性与效率问题。
4.目前,进行python和javascript混合调用有几种常见的方法:
5.(1)restful api方法使用python作为后端语言,构建restful api,通过http请求与javascript前端进行通信。具体地,可以使用python的web框架(如flask、django等)来创建api,并使用json或其他数据格式进行数据交换。javascript前端可以使用ajax或现代的fetch api来发送请求和处理响应。
6.(2)node.js:node.js是一个基于javascript的运行时环境,可以使用它来编写服务器端应用程序。在这种情况下,可以使用python和javascript共同处理服务器端逻辑。可以使用python的库(如flask、fastapi等)来编写api,同时使用javascript(node.js)处理其他服务器端任务。
7.(3)jupyter notebook:jupyter notebook是一个流行的交互式计算环境,它支持多种编程语言,包括python和javascript。可以在jupyter notebook中创建单元格,其中一部分是python代码,另一部分是javascript代码。这样可以在同一个笔记本中编写和执行python和javascript代码,并进行交互。
8.(3)pywebview:pywebview是一个python库,可以将python代码嵌入到web视图中。可以使用pywebview创建一个带有嵌入式web视图的桌面应用程序,并在其中同时运行python和javascript代码。python代码可以用于后端逻辑,而javascript代码可以用于前端交互。pywebview(flowrl.com)是围绕webview组件的轻量型跨平台包装器(wrapper),它允许在其自己的本机gui窗口中显示html内容。可以在桌面应用程序中使用web技术,同时尽最大可能隐藏使用浏览器构建gui的事实。可以将pywebview与轻量级的web框架(例如flask或bottle)一起使用,也可以单独使用python和dom之间的双向桥梁。
9.综上,上述方法均在一定程度上需要修改python代码或javascript代码,大大降低了这两种代码资源的利用效率。
技术实现要素:
10.本技术提供一种基于大数据智能平台的混合调用方法及装置,根据python代码的功能实现的复杂度来确定调用方式,并且在针对复杂度较低的功能实现方式中,通过函数调用方式较大程度上减少了对各自代码的改动,提高了代码资源利用效率。
11.本技术提供了一种基于大数据智能平台的混合调用方法,包括:
12.获取对目标数据处理时执行的python代码的功能实现的复杂度;
13.若复杂度小于阈值,则采用第一数据处理方式实现目标数据的处理:将python代码嵌入到javascript代码中,并将命令行流数据作为python和javascript的数据交换方式。
14.优选地,若复杂度大于阈值,则采用第二数据处理方式实现目标数据的处理:利用javascript代码远程调用restful服务,将python代码的功能实现作为远程服务,并采用双数据源的数据交换方式。
15.优选地,采用第一数据处理方式实现目标数据的处理,具体包括:
16.上层javascript代码接收到输入数据后,执行javascript的execpythonspawn()函数,实现python代码的调用;
17.下层python代码读取输入数据后,运行被调用的python代码,并将运行结果作为输出数据打印到命令行终端上进行显示;
18.上层javascript代码监听和捕获命令行终端上的运行结果,并将运行结果转化成javascript的returndata类型后输出。
19.优选地,远程服务端将python代码的运行结果中用于显示的数据传输到本地客户端。
20.优选地,远程服务端将python代码的运行结果的全量数据以文件方式存储在远程服务端,在远程服务端与本地客户端之间传输文件路径。
21.本技术还提供一种基于大数据智能平台的混合调用装置,包括复杂度获取模块、判断模块和第一数据处理模块;
22.获取模块用于获取对目标数据处理时执行的python代码的功能实现的复杂度;
23.判断模块用于判断复杂度是否小于阈值;
24.第一数据处理模块用于在复杂度小于阈值时,采用第一数据处理方式实现目标数据的处理:将python代码嵌入到javascript代码中,并将命令行流数据作为python和javascript的数据交换方式。
25.优选地,python/javascript混合调用装置还包括第二数据处理模块,第二数据处理模块用于在复杂度大于阈值时,采用第二数据处理方式实现目标数据的处理:利用javascript代码远程调用restful服务,将python代码的功能实现作为远程服务,并采用双数据源的数据交换方式。
26.优选地,第一数据处理模块包括输入数据接收模块、python代码运行模块和输出模块;
27.输入数据接收模块用于使上层javascript代码接收到输入数据后,执行javascript的execpythonspawn()函数,实现python代码的调用;
28.python代码运行模块用于使下层python代码读取输入数据后,运行被调用的
python代码,并将运行结果作为输出数据打印到命令行终端上进行显示;
29.输出模块用于使上层javascript代码监听和捕获命令行终端上的运行结果,并将运行结果转化成javascript的returndata类型后输出。
30.优选地,第二数据处理模块包括第一数据传输模块,第一数据传输模块用于使远程服务端将python代码的运行结果中用于显示的数据传输到本地客户端。
31.优选地,第二数据处理模块包括第二数据传输模块,第二数据传输模块用于使远程服务端将python代码的运行结果的全量数据以文件方式存储在远程服务端,在远程服务端与本地客户端之间传输文件路径。
32.通过以下参照附图对本技术的示例性实施例的详细描述,本技术的其它特征及其优点将会变得清楚。
附图说明
33.被结合在说明书中并构成说明书的一部分的附图示出了本技术的实施例,并且连同其说明一起用于解释本技术的原理。
34.图1为本技术提供的基于大数据智能平台的混合调用方法的流程图;
35.图2为本技术提供的第一数据处理方式的流程示意图;
36.图3为本技术提供的基于大数据智能平台的混合调用装置的结构图。
具体实施方式
37.现在将参照附图来详细描述本技术的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本技术的范围。
38.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本技术及其应用或使用的任何限制。
39.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
40.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
41.本技术提供一种基于大数据智能平台的混合调用方法及装置,根据python代码的功能实现的复杂度来确定调用方式,并且在针对复杂度较低的功能实现方式中,通过函数调用方式较大程度上减少了对各自代码的改动,提高了代码资源利用效率。另外,在复杂度较高的功能实现方式中,将python代码的全量运行结果以文件的方式存储在远程服务端,仅在远程服务端与本地客户端之间传输文件路径,以满足功能与性能要求,这种基于restful双数据源的python/javascript调用方法,实现了大数据智能平台中的多语言调用性能与易用性的平衡。
42.如图1所示,本技术提供的基于大数据智能平台的混合调用方法包括:
43.s110:获取对目标数据处理时执行的python代码的功能实现的复杂度。
44.作为一个实施例,可以根据python代码的运行速度等指标来判断python代码的功能实现的复杂度,也可以通过在python代码开发阶段对该代码的赋值来判断python代码的
功能实现的复杂度。
45.s120:判断复杂度是否小于阈值。若是,则判断为简单的python代码计算,执行s130;否则,判断为复杂的python代码计算,执行s140。
46.s130:采用第一数据处理方式实现目标数据的处理:将python代码嵌入到javascript代码中,并将命令行流数据作为python和javascript的数据交换方式。
47.针对简单的python功能,将python代码嵌入到javascript代码中,因此,上层是javascript代码,下层是python代码。
48.作为一个实施例,结合图2,采用第一数据处理方式实现目标数据的处理,具体包括:
49.s210:上层javascript代码接收到输入数据后,执行javascript的execpythonspawn()函数,实现python代码的调用。其中,输入数据采用json字符串的格式。
50.s220:下层python代码读取输入数据后,运行被调用的python代码,并将运行结果作为输出数据打印到命令行终端stderr上进行显示。
51.其中,输入数据同样采用json字符串的格式,与javascript代码的输入格式保持一致。
52.运行python代码时,基于python的fire库,将python代码转换为命令行运行模式,在命令行中运行。
53.s230:上层javascript代码监听和捕获命令行终端上的运行结果,并将运行结果转化成javascript的returndata类型后输出。
54.也就是说,在上层javascript代码中,包括三个步骤:(1)读取json字符串格式的输入数据。(2)执行javascript的execpythonspawn()函数。(3)监听并捕获python代码的命令行终端输出数据,并将其转换为javascript的returndata类型。
55.在下层python代码中,也分为三个步骤:(1)读取json字符串格式的输入数据。(2)运行python代码。(3)输出数据,并将输出数据打印到命令行终端上。
56.上述的python代码调用方式无需修改python代码即可实现数据的处理,实现了非侵入式的代码调用。
57.s140:采用第二数据处理方式实现目标数据的处理:利用javascript代码远程调用restful服务,将python代码的功能实现作为远程服务,并采用双数据源的数据交换方式。
58.针对复杂的python功能,将python功能封装为restful服务,提供http api接口供本地执行的javascript代码远程调用,也就是说,将python功能和javascript代码通过网络服务连接起来。这样带来的好处是,python功能与javascript功能相互隔离,python功能所需要进行的复杂计算性能和效率不会受到javascript性能较弱的限制。
59.但是,python在远程服务端运行,javascript在本地客户端执行,两方的数据交换如果处理不当,会严重影响效率。基于这样的考虑,优选地,远程服务端将python代码的运行结果的全量数据以文件方式存储在远程服务端,在远程服务端与本地客户端之间传输文件路径,以满足功能与性能要求。同时,远程服务端将python代码的运行结果中用于显示的数据以json字符串的形式传输到本地客户端,以满足显示用。这种基于restful双数据源的
python/javascript调用方法,实现了大数据智能平台中的多语言调用性能与易用性的平衡。
60.基于上述python/javascript混合调用方法,本技术还提供一种基于大数据智能平台的混合调用装置。如图3所示,python/javascript混合调用装置包括复杂度获取模块310、判断模块320和第一数据处理模块330和第二数据处理模块340。
61.获取模块310用于获取对目标数据处理时执行的python代码的功能实现的复杂度。
62.判断模块320用于判断复杂度是否小于阈值。
63.第一数据处理模块330用于在复杂度小于阈值时,采用第一数据处理方式实现目标数据的处理:将python代码嵌入到javascript代码中,并将命令行流数据作为python和javascript的数据交换方式。
64.第二数据处理模块340用于在复杂度大于阈值时,采用第二数据处理方式实现目标数据的处理:利用javascript代码远程调用restful服务,将python代码的功能实现作为远程服务,并采用双数据源的数据交换方式。
65.优选地,第一数据处理模块330包括输入数据接收模块3301、python代码运行模块3302和输出模块3303。
66.输入数据接收模块3301用于使上层javascript代码接收到输入数据后,执行javascript的execpythonspawn()函数,实现python代码的调用。
67.python代码运行模块3302用于使下层python代码读取输入数据后,运行被调用的python代码,并将运行结果作为输出数据打印到命令行终端上进行显示。
68.输出模块3303用于使上层javascript代码监听和捕获命令行终端上的运行结果,并将运行结果转化成javascript的returndata类型后输出。
69.优选地,第二数据处理模块340包括第一数据传输模块3401,第一数据传输模块3401用于使远程服务端将python代码的运行结果中用于显示的数据传输到本地客户端。
70.优选地,第二数据处理模块340包括第二数据传输模块3402,第二数据传输模块3402用于使远程服务端将python代码的运行结果的全量数据以文件方式存储在远程服务端,在远程服务端与本地客户端之间传输文件路径。
71.虽然已经通过例子对本技术的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本技术的范围。本领域的技术人员应该理解,可在不脱离本技术的范围和精神的情况下,对以上实施例进行修改。本技术的范围由所附权利要求来限定。
技术特征:
1.一种基于大数据智能平台的混合调用方法,其特征在于,包括:获取对目标数据处理时执行的python代码的功能实现的复杂度;若所述复杂度小于阈值,则采用第一数据处理方式实现目标数据的处理:将所述python代码嵌入到javascript代码中,并将命令行流数据作为python和javascript的数据交换方式。2.根据权利要求1所述的基于大数据智能平台的混合调用方法,其特征在于,若所述复杂度大于阈值,则采用第二数据处理方式实现目标数据的处理:利用javascript代码远程调用restful服务,将所述python代码的功能实现作为远程服务,并采用双数据源的数据交换方式。3.根据权利要求1所述的基于大数据智能平台的混合调用方法,其特征在于,采用第一数据处理方式实现目标数据的处理,具体包括:上层javascript代码接收到输入数据后,执行javascript的execpythonspawn()函数,实现所述python代码的调用;下层python代码读取输入数据后,运行被调用的python代码,并将运行结果作为输出数据打印到命令行终端上进行显示;上层javascript代码监听和捕获所述命令行终端上的运行结果,并将所述运行结果转化成javascript的returndata类型后输出。4.根据权利要求2所述的基于大数据智能平台的混合调用方法,其特征在于,远程服务端将所述python代码的运行结果中用于显示的数据传输到本地客户端。5.根据权利要求4所述的基于大数据智能平台的混合调用方法,其特征在于,远程服务端将所述python代码的运行结果的全量数据以文件方式存储在远程服务端,在远程服务端与本地客户端之间传输文件路径。6.一种基于大数据智能平台的混合调用装置,其特征在于,包括复杂度获取模块、判断模块和第一数据处理模块;所述获取模块用于获取对目标数据处理时执行的python代码的功能实现的复杂度;所述判断模块用于判断所述复杂度是否小于阈值;所述第一数据处理模块用于在所述复杂度小于阈值时,采用第一数据处理方式实现目标数据的处理:将所述python代码嵌入到javascript代码中,并将命令行流数据作为python和javascript的数据交换方式。7.根据权利要求6所述的基于大数据智能平台的混合调用装置,其特征在于,还包括第二数据处理模块,所述第二数据处理模块用于在所述复杂度大于阈值时,采用第二数据处理方式实现目标数据的处理:利用javascript代码远程调用restful服务,将所述python代码的功能实现作为远程服务,并采用双数据源的数据交换方式。8.根据权利要求6所述的基于大数据智能平台的混合调用装置,其特征在于,所述第一数据处理模块包括输入数据接收模块、python代码运行模块和输出模块;所述输入数据接收模块用于使上层javascript代码接收到输入数据后,执行javascript的execpythonspawn()函数,实现所述python代码的调用;所述python代码运行模块用于使下层python代码读取输入数据后,运行被调用的python代码,并将运行结果作为输出数据打印到命令行终端上进行显示;
所述输出模块用于使上层javascript代码监听和捕获所述命令行终端上的运行结果,并将所述运行结果转化成javascript的returndata类型后输出。9.根据权利要求7所述的基于大数据智能平台的混合调用装置,其特征在于,所述第二数据处理模块包括第一数据传输模块,所述第一数据传输模块用于使远程服务端将所述python代码的运行结果中用于显示的数据传输到本地客户端。10.根据权利要求9所述的基于大数据智能平台的混合调用装置,其特征在于,所述第二数据处理模块包括第二数据传输模块,所述第二数据传输模块用于使远程服务端将所述python代码的运行结果的全量数据以文件方式存储在远程服务端,在远程服务端与本地客户端之间传输文件路径。
技术总结
本申请公开了一种基于大数据智能平台的混合调用方法及装置,方法包括:获取对目标数据处理时执行的Python代码的功能实现的复杂度;若复杂度小于阈值,则采用第一数据处理方式实现目标数据的处理:将Python代码嵌入到JavaScript代码中,并将命令行流数据作为Python和JavaScript的数据交换方式。本申请根据Python代码的功能实现的复杂度来确定调用方式,并且在针对复杂度较低的功能实现方式中,通过函数调用方式较大程度上减少了对各自代码的改动,提高了代码资源利用效率。提高了代码资源利用效率。提高了代码资源利用效率。
技术研发人员:侯加文 汪冬冬 刘昂 郑玉忠 温运岭 姜均停 赵鹏
受保护的技术使用者:河南中烟工业有限责任公司
技术研发日:2023.06.26
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/