CN116431108B - 对象类型的处理方法、装置、电子设备及存储介质 - Google Patents

对象类型的处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116431108B
CN116431108B CN202310271135.0A CN202310271135A CN116431108B CN 116431108 B CN116431108 B CN 116431108B CN 202310271135 A CN202310271135 A CN 202310271135A CN 116431108 B CN116431108 B CN 116431108B
Authority
CN
China
Prior art keywords
code
service
type information
specified object
determining
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.)
Active
Application number
CN202310271135.0A
Other languages
English (en)
Other versions
CN116431108A (zh
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202310271135.0A priority Critical patent/CN116431108B/zh
Publication of CN116431108A publication Critical patent/CN116431108A/zh
Application granted granted Critical
Publication of CN116431108B publication Critical patent/CN116431108B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种对象类型的处理方法、装置、电子设备及存储介质,涉深度学习以及软件发开等技术领域。具体实现方案包括:确定集成开发环境中业务的代码处于非运行状态;基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;在所述业务的代码中注释所述指定对象的类型信息。本公开的技术,能够有效地提高业务代码的开发效率。

Description

对象类型的处理方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,具体涉及深度学习以及软件发开等技术领域,尤其涉及一种对象类型的处理方法、装置、电子设备及存储介质。
背景技术
深度学习框架中,通常采用Python语言进行开发,Python语言是一门动态语言,不需要指定对象类型信息。可是自从Python增强建议(Python Enhancement Proposals;PEP)406提出之后,Python3.5引入了类型提示功能,开发者只需要在源码中添加类型注释即可添加类型提示功能。不同于其他静态语言,Python代码中的类型注释并不影响解释器的运行,反而将其作为注释的一种而忽略掉,从而遵循动态语言的本质。
在深度学习的开发中,开发者在编写深度学习代码时不可避免的频繁对一些对象调用方法和属性。但是有一些类型的对象生成情况较为复杂,无法获取到这些对象的类型,进而也无法在Python代码中注释这些对象的类型,以进行提示。例如,有些对象的动态图和静态图下的表示不一致,而且这些对象都是通过Pybind11在C++端实现的。在使用这些对象时,由于静态类型的分析工具无法通过分析Python源码的方式,来获取对象的类型信息,导致无法从深度学习的集成开发环境(Integrated Development Environment;IDE)/编辑器(Editor)中获取这些对象的类型。
发明内容
本公开提供了一种对象类型的处理方法、装置、电子设备及存储介质。
根据本公开的一方面,提供了一种对象类型的处理方法,包括:
确定集成开发环境中业务的代码处于非运行状态;
基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;
在所述业务的代码中注释所述指定对象的类型信息。
根据本公开的另一方面,提供了一种对象类型的处理装置,包括:
确定模块,用于确定集成开发环境中业务的代码处于非运行状态;
类型获取模块,用于基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;
注释模块,在所述业务的代码中注释所述指定对象的类型信息。
根据本公开的再一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方面和任一可能的实现方式的方法。
根据本公开的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如上所述的方面和任一可能的实现方式的方法。
根据本公开的再另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方面和任一可能的实现方式的方法。
根据本公开的技术,能够有效地提高业务代码的开发效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的示意图;
图2是根据本公开第二实施例的示意图;
图3是本公开提供的调用代理模块的代码片段示意图;
图4是本公开提供的一种业务的一段代码片段的示意图;
图5是图4所示的Tensor类型的智能提示的效果图;
图6是根据本公开第三实施例的示意图;
图7是根据本公开第四实施例的示意图;
图8是用来实现本公开实施例的方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
需要说明的是,本公开实施例中所涉及的终端设备可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(TabletComputer)等智能设备;显示设备可以包括但不限于个人电脑、电视等具有显示功能的设备。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1是根据本公开第一实施例的示意图;如图1所示,本实施例提供一种对象类型的处理方法,应用在深度学习的IDE中,具体可以包括如下步骤:
S101、确定IDE中业务的代码处于非运行状态;
S102、基于对业务的代码对应的配置文件以及源代码的解析,获取业务的代码中指定对象的类型信息;
S103、在业务的代码中注释指定对象的类型信息。
本实施例的技术方案,应用于深度学习的框架中,业务的代码可以采用Python语言进行开发。对于有些指定对象,是通过Pybind11在C++端实现的,所以,静态类型分析工具很难直接从Python代码中获得指定对象的类型信息。所以,在本实施例的技术方案中,可以基于对业务的代码对应的配置文件以及源代码的解析,获取业务的代码中指定对象的类型信息,这样,可以解决静态分析工具无法从Python代码中获得指定对象的类型信息的问题。进一步地,在业务的代码中注释指定对象的类型信息,实现对指定对象的类型进行有效地提示,以供开发者参考,进而可以有效地提高开发效率。
而且在实际应用中,指定对象的类型的注释主要是提示给开发者,供开发者参考。考虑到开发者开发业务的代码时,业务的代码应该处于非运行状态。而且,业务的代码若处于运行状态,在业务代码中注释指定对象的类型信息,可能会导致业务的代码运行出现错误(Bug)等问题。所以,本实施例中,必须要确定IDE中业务的代码处于非运行状态。
本实施例的对象类型的处理方法,在IDE中业务的代码处于非运行状态时,通过对业务的代码对应的配置文件以及源代码的解析,准确、高效地获取业务的代码中指定对象的类型信息,可以有效地解决静态分析工具无法从Python代码中获得指定对象的类型信息的问题,进一步地,在业务的代码中注释指定对象的类型信息,能够在业务的代码中对指定对象的类型信息进行有效地提示,供开发者参考,进而可以有效地提高业务代码的开发效率。
图2是根据本公开第二实施例的示意图;本实施例的对象类型的处理方法,在上述图1所示实施例的技术方案的基础上,进一步更加详细地描述本公开的技术方案。如图2所示,本实施例的对象类型的处理方法,以指定对象为张量(Tensor)对象为例,具体可以包括如下步骤:
S201、通过检测标识程序运行状态的预设变量的值,确定业务的代码处于非运行状态;
考虑到张量(Tensor)作为深度学习中的最核心的模块,开发者在编写深度学习代码时不可避免的频繁对Tensor对象调用方法和属性。但是Tensor对象生成情况较为复杂,不仅动态图和静态图下的表示不一致,而且它们都是通过pybind11在C++端实现的,使得静态类型分析工具无法通过分析Python源码的方式来获取Tensor对象的类型信息,进而导致使用Tensor对象时,无法从深度学习的IDE/编辑器(Editor)中获取Tensor对象的类型,无法为开发者提供Tensor对象的类型的提示,导致开发者的开发效率降低。所以,本实施例中,以指定对象为张量(Tensor)对象为例,获取Tensor对象的类型信息,并在代码中进行注释。
例如,步骤S201在实施时,具体可以检测预设变量typing.TYPE_CHECKING的值是否为True;若是,确定业务的代码处于非运行状态。否则,若typing.TYPE_CHECKING的值是False,则可以确定业务的代码处理运行状态。
通过采用上述方式,能够及时、准确地检测到业务代码的运行状态。
S202、调用为业务的代码预先配置的代理模块,从代理模块对业务的代码对应的配置文件以及源代码的解析中,获取指定对象的类型信息;
可选地,在步骤S202之前,可以包括:为业务的代码配置代理模块,使得代理模块能够解析业务的代码对应的配置文件以及源代码,获取指定对象的类型信息。
例如,本实施例的指定对象为Tensor对象,配置文件可以为算子YAML文件,YAML为YAML不是一种标记语言(YAML Ain't a Markup Language")的首字母缩写。源代码为C++语言的代码。因为Tensor对象是通过Pybind11在C++端实现的,所以源代码为C++代码。
本实施例中,预先配置的代理模块也可以称为Tensor_proxy模块,可以解析算子YAML文件以及C++源代码,获取很多函数对象的类型信息。例如,可以获取Python应用程序编程接口(Application Programming Interface;API)中的所有函数的类型信息、以及通过Pybind11暴露出来的C/C++接口的函数类型信息。其中,可以获取到本实施例的场景中的获取Tensor对象的类型信息。具体地,Tensor_proxy模块可以预先解析并获取到业务的代码中所有Tensor对象的类型信息。使用时,调用该Tensor_proxy模块,便可以直接获取到Tensor_proxy模块解析得到的Tensor对象的类型信息。当然可选地,本实施例的上述方案以配置代理模块为例。实际应用中,也可以不预先配置代理模块,而在使用时,直接基于对业务的代码对应的配置文件以及源代码的解析,获取业务的代码中指定对象的类型信息。相对来说,预先配置代理模块的方式,更加方便、更加实用。
例如,图3是本公开提供的调用代理模块的代码片段示意图。如图3所示,若预设变量typing.TYPE_CHECKING的值为True时,可以调用代理模块如Tensor_proxy模块,以获取Tensor_proxy模块解析的Tensor对象的类型信息。
S203、在业务的代码中指定对象的位置处注释指定对象的类型信息。
具体地,可以参考代码中通用的注释标记方式,在指定对象所在行中,代码内容的后面,注释指定对象的类型信息。
或者可选地,本实施例中,也可以以弹框的形式在业务的代码中指定对象的位置处展示指定对象的类型信息。例如,为了不影响代码内容的展示,可以在业务代码中指定对象的行的下方弹出一个框,展示指定对象的类型信息,可以实现指定对象的类型信息的智能提示,供开发者参考。此时对应的代码的下一行的内容可以在弹框之后展示。
本实施例中,注释的指定对象的类型信息,仅起到注解的作用,在业务的代码运行时,可以忽略。
无论采用哪种方式,均可以准确、高效在业务的代码中指定对象的位置处展示指定对象的类型信息,以智能化地实现指定对象的类型提示功能,有效地提高代码的开发效率。
本实施例的对象类型的处理方法,配置代理模块即可实现指定对象的类型信息的获取以及注释,不依赖于任何第三方库,也不会影响代码运行时的性能,维护成本也较低,底层代码的改动,会自动映射到配置的代理模块上,不需要额外付出更多的维护成本,而且潜在风险系数也非常小。使用时,通过调用预先配置的代理模块,便可以准确、高效地获取到指定对象的类型信息,使用非常方便。本实施例中,还可以进一步在业务的代码中智能地对指定对象的类型进行提示,可以有效地提高开发者的编程体验和开发效率,进而可以有效地提高业务的开发效率。
图4是本公开提供的一种业务的一段代码片段的示意图。如图4所示,从paddle库导入的Tensor,是无法推断出对应的函数对象的类型,作用等同于Any,无任何代码智能提示的效果。如图中第4-5行代码所示。而且,Tensor对象之间的计算之后无法进行深入推断,如图中第7行代码所示,无法推断出变量z属于Tensor对象。基于此,可以得知,现有的代码缺少Tensor对象的类型信息的智能指示功能。
基于此,可以采用本实施例的上述技术方案,解决上述问题。例如,图5是图4所示的Tensor类型的智能提示的效果图。如图5所示,变量x和y能被IDE推断为Tensor类型,并采用本实施例的技术方案,能支持在代码中对Tensor类型的智能提示。而且变量x和y计算之后,得到的变量z可被IDE推断为Tensor类型,故也可支持采用本实施例的技术方案,在代码中对Tensor类型的智能提示。
例如,在Paddle框架中,此前版本如paddlepaddle<=2.4.1,是不支持Tensor类型的智能提示,故基于paddle编写与Tensor变量相关的代码时体验非常差,采用本实施例的技术方案,可以有效提升此基础体验。而且通过在业务的代码中增加Tensor对象的类型信息,以实现对Tensor对象的类型信息的智能指示,有效地提高代码的开发效率。
本公开实施例中的Tensor对象,也可以成为Tensor变量、或者Tensor函数。
本公开的上述实施例中,以指定对象是Tensor对象为例,实际应用中,也可以为通过Pybind11在C++端实现的其他对象,在此不做举例赘述。另外,本实施例中,以配置文件为算子YAML文件为例,算子YAML文件中包括非常详细的资源清单,记录有每一个资源的配置信息。实际应用中,也可以采用其他格式的配置文件,总之包括业务的代码的所有配置信息即可。本实施例中,源代码是以C++源码为例,可以支持通过Pybind11在C++端实现的对象如Tensor对象的类型信息的获取。实际应用中源代码也可以为不同于Python语言的其他语言形式的源码如C源码等,在此不做限定,也不再举例赘述。
具体地,对于上述场景,预先配置的代理模块如Tensor_proxy模块,可以对业务的代码对应的算子YAML文件以及C++源代码进行解析,获取到业务的代码中的各Tensor对象的类型信息。使用时,通过调用该Tensor_proxy模块,可以从解析结果中获取到业务的代码中各Tensor对象的类型信息,并将各Tensor对象的类型信息注释在业务的代码中对应Tensor对象的位置处,能够有效地实现在业务的代码中对Tensor对象的类型信息进行提示,非常方便开发者参考,进而可以有效地提高业务代码的开发效率。
图6是根据本公开第三实施例的示意图;如图6所示,本实施例提供一种对象类型的处理装置600,包括:
确定模块601,用于确定集成开发环境中业务的代码处于非运行状态;
类型获取模块602,用于基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;
注释模块603,在所述业务的代码中注释所述指定对象的类型信息。
本实施例的对象类型的处理装置600,通过采用上述模块实现对象类型处理的实现原理以及技术效果,与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。
图7是根据本公开第四实施例的示意图;如图7所示,本实施例提供一种对象类型的处理装置700,包括上述图6所示的同名同功能模块:确定模块701、类型获取模块702以及注释模块703。
在本实施例中,类型获取模块702,用于:
调用为所述业务的代码预先配置的代理模块,从所述代理模块对所述业务的代码对应的所述配置文件以及所述源代码的解析中,获取所述指定对象的类型信息。
如图7所示,在本公开的一个实施例中,该对象类型的处理装置700还包括:
配置模块704,用于为所述业务的代码配置所述代理模块,使得所述代理模块能够解析所述业务的代码对应的配置文件以及源代码,获取所述指定对象的类型信息。
进一步可选地,在本公开的一个实施例中,配置文件包括算子YAML文件,所述源代码包括C++源码,所述指定对象包括张量对象。
进一步可选地,在本公开的一个实施例中,确定模块701,用于:
通过检测标识业务的代码运行状态的预设变量的值,确定所述业务的代码处于非运行状态。
进一步可选地,在本公开的一个实施例中,确定模块701,用于:
检测预设变量typing.TYPE_CHECKING的值是否为True;
若是,确定所述业务的代码处于非运行状态。
进一步可选地,在本公开的一个实施例中,注释模块703,用于:
在所述业务的代码中所述指定对象的位置处注释所述指定对象的类型信息;
或者以弹框的形式在所述业务的代码中所述指定对象的位置处展示所述指定对象的类型信息。
本实施例的对象类型的处理装置700,通过采用上述模块实现对象类型处理的实现原理以及技术效果,与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如本公开的上述方法。例如,在一些实施例中,本公开的上述方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的本公开的上述方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行本公开的上述方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (14)

1.一种对象类型的处理方法,包括:
确定集成开发环境中业务的代码处于非运行状态;
基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;所述指定对象采用的所述源代码为C++源码,所述指定对象包括张量对象;所述业务的代码采用Python语言开发;
在所述业务的代码中注释所述指定对象的类型信息;
基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息,包括:
调用为所述业务的代码预先配置的代理模块,从所述代理模块对所述业务的代码对应的所述配置文件以及所述源代码的解析中,获取所述指定对象的类型信息。
2.根据权利要求1所述的方法,其中,调用预先配置的代理模块,从所述代理模块对所述业务的代码对应的所述配置文件以及所述源代码的解析中,获取所述指定对象的类型信息之前,所述方法还包括:
为所述业务的代码配置所述代理模块,使得所述代理模块能够解析所述业务的代码对应的配置文件以及源代码,获取所述指定对象的类型信息。
3.根据权利要求2所述的方法,其中,所述配置文件包括算子YAML文件。
4.根据权利要求1所述的方法,其中,确定集成开发环境中业务的代码处于非运行状态,包括:
通过检测标识业务的代码运行状态的预设变量的值,确定所述业务的代码处于非运行状态。
5.根据权利要求4所述的方法,其中,通过检测标识程序运行状态的预设变量的值,确定所述业务的代码处于非运行状态,包括:
检测预设变量typing.TYPE_CHECKING的值是否为True;
若是,确定所述业务的代码处于非运行状态。
6.根据权利要求1-5中任一所述的方法,其中,在所述业务的代码中注释所述指定对象的类型信息,包括:
在所述业务的代码中所述指定对象的位置处注释所述指定对象的类型信息;
或者以弹框的形式在所述业务的代码中所述指定对象的位置处展示所述指定对象的类型信息。
7.一种对象类型的处理装置,包括:
确定模块,用于确定集成开发环境中业务的代码处于非运行状态;
类型获取模块,用于基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;所述指定对象采用的所述源代码为C++源码,所述指定对象包括张量对象;所述业务的代码采用Python语言开发;
注释模块,在所述业务的代码中注释所述指定对象的类型信息;
所述类型获取模块,用于调用为所述业务的代码预先配置的代理模块,从所述代理模块对所述业务的代码对应的所述配置文件以及所述源代码的解析中,获取所述指定对象的类型信息。
8.根据权利要求7所述的装置,其中,所述装置还包括:
配置模块,用于为所述业务的代码配置所述代理模块,使得所述代理模块能够解析所述业务的代码对应的配置文件以及源代码,获取所述指定对象的类型信息。
9.根据权利要求7所述的装置,其中,所述配置文件包括算子 YAML文件。
10.根据权利要求7所述的装置,其中,所述确定模块,用于:
通过检测标识业务的代码运行状态的预设变量的值,确定所述业务的代码处于非运行状态。
11.根据权利要求10所述的装置,其中,所述确定模块,用于:
检测预设变量typing.TYPE_CHECKING的值是否为True;
若是,确定所述业务的代码处于非运行状态。
12.根据权利要求7-11中任一所述的装置,其中,所述注释模块,用于:
在所述业务的代码中所述指定对象的位置处注释所述指定对象的类型信息;
或者以弹框的形式在所述业务的代码中所述指定对象的位置处展示所述指定对象的类型信息。
13.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-6中任一项所述的方法。
CN202310271135.0A 2023-03-16 2023-03-16 对象类型的处理方法、装置、电子设备及存储介质 Active CN116431108B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310271135.0A CN116431108B (zh) 2023-03-16 2023-03-16 对象类型的处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310271135.0A CN116431108B (zh) 2023-03-16 2023-03-16 对象类型的处理方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116431108A CN116431108A (zh) 2023-07-14
CN116431108B true CN116431108B (zh) 2024-03-22

Family

ID=87091755

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310271135.0A Active CN116431108B (zh) 2023-03-16 2023-03-16 对象类型的处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116431108B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113050953A (zh) * 2021-04-21 2021-06-29 平安普惠企业管理有限公司 基于注释生成代码的方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170357486A1 (en) * 2016-06-10 2017-12-14 International Business Machines Corporation Enhancing a crowdsourced integrated development environment application

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113050953A (zh) * 2021-04-21 2021-06-29 平安普惠企业管理有限公司 基于注释生成代码的方法、装置及存储介质

Also Published As

Publication number Publication date
CN116431108A (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN112860356A (zh) 一种api调用控制方法、装置、电子设备和存储介质
CN115509522A (zh) 面向低代码场景的接口编排方法、系统、电子设备
CN112926008B (zh) 生成表单页面的方法、装置、电子设备和存储介质
CN114398023A (zh) 生成文件的方法、配置页面的方法和装置
CN112925522A (zh) 依赖图生成方法、装置、设备、存储介质和程序产品
CN116302218B (zh) 函数信息的添加方法、装置、设备以及存储介质
CN113760438A (zh) 网页应用的页面显示方法及装置
CN112947916A (zh) 用于实现在线画布的方法、装置、设备以及存储介质
CN116431108B (zh) 对象类型的处理方法、装置、电子设备及存储介质
CN116594621A (zh) 实时流处理系统、方法和装置、电子设备、计算机介质
CN113362111B (zh) 一种内容发送方法、装置及电子设备
CN113138760B (zh) 一种页面生成方法、装置、电子设备和介质
CN114389969A (zh) 客户端的测试方法、装置、电子设备和存储介质
CN114218313A (zh) 数据管理方法、装置、电子设备、存储介质及产品
CN113722037A (zh) 一种用户界面的刷新方法、装置、电子设备及存储介质
CN113361235B (zh) Html文件的生成方法、装置、电子设备及可读存储介质
CN116257286B (zh) 一种文件处理方法、装置、电子设备及存储介质
CN116561075B (zh) 动态链接库文件的生成方法、算子的调用方法及装置
CN113656124B (zh) 登录页面的生成方法及其装置
CN115086441B (zh) 信息传输方法、装置、电子设备及存储介质
CN109376023B (zh) 用于生成调用信息、发布返回码组的方法和设备
CN117632286A (zh) 一种基于动态类加载的OpenApi实现方法及其装置
CN114115854A (zh) 一种sdk文件生成方法、装置、设备以及存储介质
CN113760731A (zh) 测试方法和装置
CN117931202A (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
GR01 Patent grant
GR01 Patent grant