CN109408216A - 任务生成方法、装置、设备及存储介质 - Google Patents
任务生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109408216A CN109408216A CN201811340403.5A CN201811340403A CN109408216A CN 109408216 A CN109408216 A CN 109408216A CN 201811340403 A CN201811340403 A CN 201811340403A CN 109408216 A CN109408216 A CN 109408216A
- Authority
- CN
- China
- Prior art keywords
- class
- task
- context
- function
- execution
- 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
- 238000000034 method Methods 0.000 title claims abstract description 137
- 230000006870 function Effects 0.000 claims description 149
- 238000012545 processing Methods 0.000 claims description 54
- 230000015654 memory Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000005538 encapsulation Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例公开了一种任务生成方法、装置、设备及存储介质。所述方法包括:获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;获取所述多个子任务类中的方法函数;根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数。通过本公开的技术方案,能够在实现多个任务的组合功能时,降低任务调用次数,提高实现效率。
Description
技术领域
本公开实施例涉及计算机技术,尤其涉及一种任务生成方法、装置、设备及存储介质。
背景技术
在大多数基于服务器/客户端的系统结构中,若客户端向服务器发起服务调用请求,则服务器会通过调度器将该请求加入线程池,由线程池来处理执行服务调用请求对应的一个或多个任务,其中,每种任务的生成可以通过生成对应的任务类来实现。
现有技术中,根据任务的方法函数来生成任务对应的任务类,生成方法较单一,需要进行优化。
发明内容
本公开实施例提供一种任务生成方法、装置、设备及存储介质,以优化现有的任务生成方式。
第一方面,本公开实施例提供了一种任务生成方法,包括:
获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;
获取所述多个子任务类中的方法函数;
根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数。
进一步的,创建所述上下文类,包括:
根据待创建的上下文类的标识定义上下文类;
为定义的所述上下文类设置继承属性,所述继承属性指示继承多个子任务对象的上下文属性参数。
进一步的,根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数,包括:
将获取的所述上下文类和所述方法函数作为输入参数,调用预设的任务创建函数,得到包含所述上下文类中的各上下文属性参数以及所述方法函数的目标任务类。
进一步的,在生成目标任务类之后,所述方法还包括:
在所述目标任务类中添加执行顺序描述信息,所述执行顺序描述信息描述在执行所述目标任务类对应的目标任务时,所述目标任务类中包含的各方法函数的执行顺序,并且所述执行顺序基于所述多个子任务类分别对应的子任务的指定执行路径确定。
进一步的,在生成目标任务类之后,所述方法还包括:
将所述目标任务类添加到任务文件中;
获取服务接口定义语言IDL文件、脚本文件、有向无环图DAG描述文件和所述任务文件:所述DAG描述文件中包含待生成的服务处理对象进行服务处理时需要执行的所述任务文件中包含的多个任务类对应的多个任务的执行依赖关系信息;
将所述服务IDL文件、所述DAG描述文件和所述任务文件,输入给所述脚本文件,通过运行所述脚本文件得到服务处理对象;
保存生成的所述服务处理对象。
进一步的,在保存生成的所述服务处理对象之后,所述方法还包括:
接收服务调用请求;
将所述服务调用请求输入给所述服务处理对象,以使所述服务处理对象根据所述服务调用请求执行获取所述多个任务的执行依赖关系信息、根据所述执行依赖关系信息生成所述多个任务的执行图、根据生成的所述执行图执行所述多个任务的操作。
第二方面,本公开实施例还提供了一种任务生成装置,该装置包括:
上下文类获取模块,用于获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;
方法函数获取模块,用于获取所述多个子任务类中的方法函数;
目标任务生成模块,用于根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数。
进一步的,上下文类获取模块具体用于:
根据待创建的上下文类的标识定义上下文类;
为定义的所述上下文类设置继承属性,所述继承属性指示继承多个子任务对象的上下文属性参数。
进一步的,目标任务生成模块具体用于:
将获取的所述上下文类和所述方法函数作为输入参数,调用预设的任务创建函数,得到包含所述上下文类中的各上下文属性参数以及所述方法函数的目标任务类。
进一步的,所述装置还包括:
信息添加模块,用于在生成目标任务类之后,在所述目标任务类中添加执行顺序描述信息,所述执行顺序描述信息描述在执行所述目标任务类对应的目标任务时,所述目标任务类中包含的各方法函数的执行顺序,并且所述执行顺序基于所述多个子任务类分别对应的子任务的指定执行路径确定。
进一步的,所述装置还包括:
任务添加模块,用于在生成目标任务类之后,将所述目标任务类添加到任务文件中;
文件获取模块,用于获取服务接口定义语言IDL文件、脚本文件、有向无环图DAG描述文件和所述任务文件:所述DAG描述文件中包含待生成的服务处理对象进行服务处理时需要执行的所述任务文件中包含的多个任务类对应的多个任务的执行依赖关系信息;
文件输入模块,用于将所述服务IDL文件、所述DAG描述文件和所述任务文件,输入给所述脚本文件,通过运行所述脚本文件得到服务处理对象;
对象保存模块,用于保存生成的所述服务处理对象。
进一步的,所述装置还包括:
请求接收模块,用于在保存生成的所述服务处理对象之后,接收服务调用请求;
请求输入模块,用于将所述服务调用请求输入给所述服务处理对象,以使所述服务处理对象根据所述服务调用请求执行获取所述多个任务的执行依赖关系信息、根据所述执行依赖关系信息生成所述多个任务的执行图、根据生成的所述执行图执行所述多个任务的操作。
第三方面,本公开实施例还提供了一种计算机设备,该设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本公开实施例中任一所述的任务生成方法。
第四方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开实施例中任一所述的任务生成方法。
本公开实施例通过获取预先创建的包含有多个子任务类上下文属性参数的上下文类,并获取该多个子任务类中的方法函数,根据该上下文类和获取的方法函数生成目标任务类,该目标任务类是包含多个子任务类的上下文属性参数和多个子任务类的方法函数的任务类,在执行该目标任务类对应的任务时,多个子任务类的方法函数均被执行,从而实现了多个子任务组合起来后所能实现的新功能。并且,仅需调用执行该目标任务类即可实现多个子任务组合起来后所能实现的组合功能,而不需要分别调用组合功能对应的多个子任务类,从而避免了调用次数多、组合功能的实现效率低等问题,实现了降低任务调用次数,提高任务组合功能的实现效率的效果。
附图说明
图1是本公开实施例一提供的一种任务生成方法的流程示意图;
图2a是本公开实施例二提供的一种任务生成方法的流程示意图;
图2b是本公开实施例二适用的一种服务处理对象的生成结构示意图;
图2c是本公开实施例二适用的一种执行图的执行顺序示意图;
图3是本公开实施例三提供的一种任务生成装置的结构示意图;
图4是本公开实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部结构。
下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。
实施例一
图1为本公开实施例一提供的一种任务生成方法的流程示意图。该方法可适用于对实现组合功能所需执行的任务进行生成的情况,该方法可以由任务生成装置来执行,该装置可由硬件和/或软件组成,并一般可集成在服务器以及所有包含服务处理功能的计算机设备中。具体包括如下:
S110、获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数。
在服务器为实现目标组合功能而进行的目标任务类创建的过程中,首先需要获取预先创建的上下文类。其中,不同的上下文类可对应于不同的功能类型,上下文类中包含有其所属功能类型对应需要执行的多个子任务类的上下文属性参数,通过该多个子任务类的上下文属性参数,可对应传递子任务执行时所需的参数值和/或传递任务执行结果值,以适配不同的组合新功能。
其中,子任务类为初始状态下的子任务,也即对子任务类进行实例化后可得到具体的子任务,其对应设置的上下文属性参数也被赋予了具体的取值。以thrift服务框架为例,本实施例中提到的子任务类为Executor,包含同步和异步两种运行方式,对外暴露统一的folly::Future<int>run(std::shared_ptr<Context>ctx)接口。内部分别调用int pre(ctx)->int sync(ctx)->int post(ctx)或int pre(ctx)->folly::Future<int>async(ctx)->int post(ctx)两条路径。每个pre/sync/async/post都是虚函数,可以被派生类覆盖。Executor通过设置的上下文属性参数Ctx来传递数据,同时内部不维护状态,以保证线程安全。
示例性的,若目标组合功能对应需要执行的多个子任务类为任务1、任务2和任务3,则预先创建的与该目标组合功能的功能类型相匹配的上下文类中,包含有任务1的上下文属性参数Ctx1、任务2的上下文属性参数Ctx2以及任务3的上下文属性参数Ctx3。
可选的,创建上下文类,包括:根据待创建的上下文类的标识定义上下文类;为定义的上下文类设置继承属性,继承属性指示继承多个子任务对象的上下文属性参数。
其中,上下文类的标识可以是上下文类的名称、身份信息等字符串。示例性的,针对目标组合功能,可定义一个上下文类,具体可使用目标组合功能的名称来定义上下文类。同时,设置该定义的上下文类继承该目标组合功能对应需要执行的所有子任务类的上下文属性参数,使得在该上下文类具有实现目标组合功能所需的所有上下文属性参数,当各子任务类实例化为子任务对象时,该上下文类能够包含有所有子任务对象对应的上下文属性参数值。
S120、获取多个子任务类中的方法函数。
本实施例中,每个子任务类可包括至少一个方法函数,用于进行相应的任务处理,实现相应的任务功能,由于每个子任务类之间是相对独立的,因此,为了能够实现多个子任务类的组合功能,也即实现最终的目标组合功能,则需获取目标组合功能对应需要执行的多个子任务的任务类中,包含的所有方法函数,以进行相应的组合后得到能够实现目标组合功能的目标任务类。
S130、根据获取的上下文类和方法函数生成目标任务类,目标任务类包含上下文类中的各上下文属性参数以及方法函数。
示例性的,可将各个子任务类中包含的方法函数,与包含有各子任务类的上下文属性参数的上下文类,组合生成能够实现目标组合功能的目标任务类,也即通过一次调用目标任务类即可实现目标组合功能,相较于现有技术中需要多次调用多个子任务类才能最终实现目标组合功能,简化了调用过程,降低了任务调用次数,提高了多个任务的组合功能的实现效率。
例如,现有技术中要实现某种功能,需要分别调用执行任务1-任务3三种任务类,本实施例生成了包含三个任务类的所有上下文属性参数和方法函数的新的任务类,则只需进行一次调用,也即调用新生成的任务类即可,使得多个任务的组合功能的实现过程更加简单,提高了实现效率。
可选的,根据获取的上下文类和方法函数生成目标任务类,目标任务类包含上下文类中的各上下文属性参数以及方法函数,包括:将获取的上下文类和方法函数作为输入参数,调用预设的任务创建函数,得到包含上下文类中的各上下文属性参数以及方法函数的目标任务类。
其中,预设的任务创建函数可以是利用上下文属性参数以及方法函数进行任务创建的函数。示例性的,可调用该任务创建函数,并将各个子任务类中包含的方法函数,以及包含有各子任务类的上下文属性参数的上下文类,作为该函数的输入参数,运行该任务创建函数后即可得到包含各子任务类的上下文属性参数以及方法函数的目标任务类。
可选的,在生成目标任务类之后,方法还包括:在目标任务类中添加执行顺序描述信息,执行顺序描述信息描述在执行目标任务类对应的目标任务时,目标任务类中包含的各方法函数的执行顺序,并且执行顺序基于多个子任务类分别对应的子任务的指定执行路径确定。
其中,各方法函数的执行顺序可以是并行执行,也可以是串行执行,在此不作限定。例如,若要实现目标组合功能,则需要执行4个子任务:任务1-任务4,指定执行路径可以是从任务1到任务4串行执行,还可以是先执行任务1,在并行执行任务2和任务3,执行2和任务3执行结束后执行任务4,具体指定什么样的执行路径与组合后的任务需要实现什么样的功能相关,可根据要实现的目标组合功能来设置相应的指定执行路径。其中,若指定执行路径是从任务1到任务4串行执行,则在目标任务类中添加的执行顺序描述信息可以是先执行任务1,再执行任务2,再执行任务3,最后执行任务4。
在上述各实施例的基础上,举一个实际例子:
首先,预先创建一个名称为RequestContext的上下文类,该上下文类中包含任务1(Executor1)的上下文属性参数Ctx1、任务2(Executor2)的上下文属性参数Ctx2、任务3(Executor3)的上下文属性参数Ctx3、任务4(Executor4)的上下文属性参数Ctx4和任务5(Executor5)的上下文属性参数Ctx5;
然后,在需要生成能够实现任务1至任务5的组合功能的目标任务类时,获取预先定义的上下文类RequestContext、任务1至任务5中的方法函数;
最后,将上下文类RequestContext、任务1至任务5中的方法函数作为输入参数,调用任务创建函数,得到生成的目标任务类。
本实施例的技术方案,通过获取预先创建的包含有多个子任务类上下文属性参数的上下文类,并获取该多个子任务类中的方法函数,根据该上下文类和获取的方法函数生成目标任务类,由于该目标任务类是包含多个子任务类的上下文属性参数和多个子任务类的方法函数的任务类,因此,解决了现有技术中或是因为没有实现多个任务组合功能的需求,或是因为各个任务均是按照预先定义的接口单独生成的,在此接口规范下想要同时实现多个任务组合后的新功能必须依次调用各个子任务类的问题,实现了在执行该目标任务类对应的任务时,能够通过将上下文类中包括的多个子任务类上下文属性参数代入到多个子任务类的方法函数里,使得多个子任务类的方法函数均被执行,从而最终实现了多个子任务组合起来后所能实现的新功能。并且,由于本实施例的技术方案仅需调用执行该目标任务类即可实现多个子任务组合起来后所能实现的组合功能,而不需要分别调用组合功能对应的多个子任务类,从而避免了调用次数多、组合功能的实现效率低等问题,实现了降低任务调用次数,提高任务组合功能的实现效率的效果。
实施例二
图2a为本公开实施例二提供的一种任务生成方法的流程示意图。本实施例以上述实施例中各个可选方案为基础进行具体化,提供了可选的任务生成方法,具体是,对在生成目标任务类之后的步骤进行了进一步扩展。具体包括如下:
S210、获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数。
S220、获取多个子任务类中的方法函数。
S230、根据获取的上下文类和方法函数生成目标任务类,目标任务类包含上下文类中的各上下文属性参数以及方法函数。
S240、将目标任务类添加到任务文件中。
本实施例中,一个任务文件对应一个服务功能,每个任务文件中包括至少一个任务类,任务文件可以是为实现特定服务功能的多个任务类的集合,其中包含有各任务对应的任务类的描述信息,描述信息中包含有各任务类所对应的上下文属性参数以及方法函数等。
S250、获取服务IDL文件、脚本文件、有向无环图DAG描述文件和任务文件:DAG描述文件中包含待生成的服务处理对象进行服务处理时需要执行的任务文件中包含的多个任务类对应的多个任务的执行依赖关系信息。
本实施例中,服务IDL(Interface DefinitionLanguage,接口定义语言)文件是一个接口文件,该文件中包含该服务功能所属服务类型对应的服务需求信息(比如服务的输入是什么、输出是什么)、输入输出的规范和字段定义信息等。DAG(Directed AcyclicGraph,有向无环图)描述文件用于记录特定服务类型对应所需执行的多个任务之间的执行依赖关系信息。脚本文件是指生成器,是依据一定的代码格式编写的可执行文件,用来进行任务的批量处理(具体指生成代码)。
其中,执行依赖关系信息包含服务中多个任务执行时各任务所依赖的执行条件,例如,任务文件中包括任务1-任务5,其DAG描述文件中包含的执行依赖关系信息例如可以为:任务2和任务3的执行依赖于任务1的执行结果,任务4的执行依赖于任务3的执行结果,任务5的执行依赖于任务2和任务4的执行结果,以此来确定任务的执行顺序,其中,执行顺序可以是并行执行,也可以是串行执行,在此不作限定。
示例性的,若任务文件中包含之前生成的目标任务类,则后续在执行目标任务类对应的目标任务时,可根据其中的执行顺序描述信息一次性执行其中包括的多个子任务,从而无需对每个子任务都进行调用,提高了任务执行效率。
S260、将服务IDL文件、DAG描述文件和任务文件,输入给脚本文件,通过运行脚本文件得到服务处理对象。
以thrift服务框架为例,Thrift Service Handler中,每一个服务IDL文件,也即thrift idl,都会编译生成一个api::ThriftServiceHandler以接入内部服务化平台。
可选的,通过运行脚本文件得到服务处理对象,包括:运行脚本文件后,得到服务源代码文件、服务处理类、资源管理器和请求上下文类;通过对服务源代码文件、服务处理类、资源管理器和请求上下文类进行编译,得到服务处理程序;在启动服务处理程序时,通过调用服务适配函数适配服务源代码文件,通过调用服务封装函数加载适配的服务源代码文件,得到生成的服务处理对象。
以thrift服务框架为例,运行脚本文件后,得到的服务源代码文件可以是ThriftInterface,通过对该服务源代码文件进行编译,可将人类可读的计算机语言指令翻译成为计算机可以执行的二进制指令。运行脚本文件后,得到的服务处理类,属于未被实例化的服务处理对象,而得到的资源管理器(Resource Manager),可用于管理该服务类型对应所需执行的多个任务Executor,其中注册有该服务所需的全部任务Executor对应的信息,例如每个任务所属任务类所对应的上下文属性参数以及方法函数,同时,还生成有请求上下文类(Request Context),其中包含有该上下文属性参数。
示例性的,在编译得到服务处理程序后,在启动该服务处理程序时,可通过调用服务适配函数(service adaptor)确定该服务类型对应的服务源代码文件(ThriftInterface),再通过调用thrift服务中的封装函数(Libtimetomb)对该服务源代码文件进行封装,最终得到服务处理对象。其中,封装函数(Libtimetomb)可通过gflags设置端口,线程数,日志名,配置文件等,并向该封装函数(Libtimetomb)提供相应的服务源代码文件(Thrift Interface)即可执行相应的主函数流程。具体的,thrift服务框架中服务处理对象(thrift service handler)的生成过程如图2b所示。
S270、保存生成的服务处理对象。
其中,服务处理对象可以是对服务调用请求进行处理时,服务器所提供的服务处理入口,例如thrift服务框架中的Thrift Service Handler。示例性的,在得到服务处理对象时,可通过ExecutorStore来存储、检索、提供命令行和restful接口,同时提供应用示例和帮助文档,以提高Executor的代码复用率。
可选的,在保存生成的服务处理对象之后,方法还包括:接收服务调用请求;将服务调用请求输入给服务处理对象,以使服务处理对象根据服务调用请求执行获取多个任务的执行依赖关系信息、根据执行依赖关系信息生成多个任务的执行图、根据生成的执行图执行多个任务的操作。
其中,服务调用请求可以是针对服务器中预设的服务功能之一,由客户端向服务器发起的请求。例如,服务调用请求可以是客户端向服务器发起的文章推荐服务的调用请求,以使服务器为该客户端提供文章推荐结果。
在thrift服务框架中,客户端可通过执行RPC Function(Remote Procedure CallFunction,远程过程调用函数),以将服务调用请求发送给服务器,再由服务器输入至预先生成的服务处理对象。其中,不同的服务类型可对应于不同的服务处理对象。
其中,执行依赖关系信息包含服务中多个任务执行时各任务所依赖的执行条件,基于该执行条件,可生成该多个任务对应的执行图,以描述多个任务的执行顺序,该执行顺序包括并行执行和/或串行执行,在此不作限定。例如,图2c所示,接收到的服务调用请求所对应的服务需要执行的任务包括第一任务21、第二任务22、第三任务23、第四任务24以及第五任务25,若获取的预先设置的执行依赖关系信息为:第二任务22和第三任务23的执行依赖于第一任务21的执行结果,第四任务24的执行依赖于第三任务23的执行结果,第五任务25的执行依赖于第二任务22和第四任务24的执行结果,则可自动生成如图2c所示的执行图,其中,首先执行的是第一任务21,由于第二任务22和第三任务23之间没有依赖关系,因此第二任务22与第三任务23并行执行,在第三任务13执行结束后执行第四任务24,最后,在第二任务22和第四任务24均执行结束后执行第五任务25。
本实施例中,由于生成的执行图中描述了任务之间的执行顺序,因此服务处理对象可根据该执行图确定各任务的执行顺序,进而根据该执行顺序执行各个任务。以thrift服务框架为例,LibEngine是Executor运行的容器,内部将多个Executor串行或并行组合新的Executor,执行其run方法即可完成整个执行图中各任务的执行。在服务调用请求所对应多个任务均执行完毕,则可得到服务调用结果。
本实施例的技术方案,通过将根据多个子任务类组合生成的目标任务类添加至任务文件中,再结合获取的其他文件,生成和保存服务处理对象,以在客户端进行服务调用时,提供服务处理入口,使得在进行服务处理时,若执行的多个任务类中包括目标任务类对应的目标任务,则可根据其中的执行顺序描述信息一次性执行其中包括的多个子任务,进而无需对每个子任务都进行调用,提高了任务执行效率。
实施例三
图3为本公开实施例三提供的一种任务生成装置的结构示意图。参考图3,任务生成装置包括:上下文类获取模块310、方法函数获取模块320以及目标任务生成模块330,下面对各模块进行具体说明。
上下文类获取模块310,用于获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;
方法函数获取模块320,用于获取所述多个子任务类中的方法函数;
目标任务生成模块330,用于根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数。
本实施例提供的任务生成装置,通过获取预先创建的包含有多个子任务类上下文属性参数的上下文类,并获取该多个子任务类中的方法函数,根据该上下文类和获取的方法函数生成目标任务类,该目标任务类是包含多个子任务类的上下文属性参数和多个子任务类的方法函数的任务类,在执行该目标任务类对应的任务时,多个子任务类的方法函数均被执行,从而实现了多个子任务组合起来后所能实现的新功能。并且,仅需调用执行该目标任务类即可实现多个子任务组合起来后所能实现的组合功能,而不需要分别调用组合功能对应的多个子任务类,从而避免了调用次数多、组合功能的实现效率低等问题,实现了降低任务调用次数,提高任务组合功能的实现效率的效果。
可选的,上下文类获取模块310具体可以用于:
根据待创建的上下文类的标识定义上下文类;
为定义的所述上下文类设置继承属性,所述继承属性指示继承多个子任务对象的上下文属性参数。
可选的,目标任务生成模块330具体用于:
将获取的所述上下文类和所述方法函数作为输入参数,调用预设的任务创建函数,得到包含所述上下文类中的各上下文属性参数以及所述方法函数的目标任务类。
可选的,所述装置还包括:
信息添加模块,用于在生成目标任务类之后,在所述目标任务类中添加执行顺序描述信息,所述执行顺序描述信息描述在执行所述目标任务类对应的目标任务时,所述目标任务类中包含的各方法函数的执行顺序,并且所述执行顺序基于所述多个子任务类分别对应的子任务的指定执行路径确定。
可选的,所述装置还包括:
任务添加模块,用于在生成目标任务类之后,将所述目标任务类添加到任务文件中;
文件获取模块,用于获取服务IDL文件、脚本文件、有向无环图DAG描述文件和所述任务文件:所述DAG描述文件中包含待生成的服务处理对象进行服务处理时需要执行的所述任务文件中包含的多个任务类对应的多个任务的执行依赖关系信息;
文件输入模块,用于将所述服务IDL文件、所述DAG描述文件和所述任务文件,输入给所述脚本文件,通过运行所述脚本文件得到服务处理对象;
对象保存模块,用于保存生成的所述服务处理对象。
可选的,所述装置还包括:
请求接收模块,用于在保存生成的所述服务处理对象之后,接收服务调用请求;
请求输入模块,用于将所述服务调用请求输入给所述服务处理对象,以使所述服务处理对象根据所述服务调用请求执行获取所述多个任务的执行依赖关系信息、根据所述执行依赖关系信息生成所述多个任务的执行图、根据生成的所述执行图执行所述多个任务的操作。
上述产品可执行本公开任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本公开实施例四提供的一种计算机设备的结构示意图,如图4所示,本实施例提供的一种计算机设备,包括:处理器41和存储器42。该计算机设备中的处理器可以是一个或多个,图4中以一个处理器41为例,所述计算机设备中的处理器41和存储器42可以通过总线或其他方式连接,图4中以通过总线连接为例。
本实施例中计算机设备的处理器41中集成了上述实施例提供的任务生成装置。此外,该计算机设备中的存储器42作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本公开实施例中任务生成方法对应的程序指令/模块(例如,附图3所示的任务生成装置中的模块,包括:上下文类获取模块310、方法函数获取模块320以及目标任务生成模块330)。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述方法实施例中任务生成方法。
存储器42可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
并且,当上述计算机设备所包括一个或者多个程序被所述一个或者多个处理器41执行时,程序进行如下操作:
获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;获取多个子任务类中的方法函数;根据获取的上下文类和方法函数生成目标任务类,目标任务类包含上下文类中的各上下文属性参数以及方法函数。
实施例五
本公开实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被任务生成装置执行时实现如本公开实施例一提供的任务生成方法,该方法包括:获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;获取多个子任务类中的方法函数;根据获取的上下文类和方法函数生成目标任务类,目标任务类包含上下文类中的各上下文属性参数以及方法函数。
当然,本公开实施例所提供的一种计算机可读存储介质,其上存储的计算机程序被执行时不限于实现如上所述的方法操作,还可以实现本公开任意实施例所提供的任务生成方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
值得注意的是,上述任务生成装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。
注意,上述仅为本公开的较佳实施例及所运用技术原理。本领域技术人员会理解,本公开不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本公开的保护范围。因此,虽然通过以上实施例对本公开进行了较为详细的说明,但是本公开不仅仅限于以上实施例,在不脱离本公开构思的情况下,还可以包括更多其他等效实施例,而本公开的范围由所附的权利要求范围决定。
Claims (10)
1.一种任务生成方法,其特征在于,包括:
获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;
获取所述多个子任务类中的方法函数;
根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数。
2.根据权利要求1所述的方法,其特征在于,创建所述上下文类,包括:
根据待创建的上下文类的标识定义上下文类;
为定义的所述上下文类设置继承属性,所述继承属性指示继承多个子任务对象的上下文属性参数。
3.根据权利要求1所述的方法,其特征在于,根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数,包括:
将获取的所述上下文类和所述方法函数作为输入参数,调用预设的任务创建函数,得到包含所述上下文类中的各上下文属性参数以及所述方法函数的目标任务类。
4.根据权利要求1所述的方法,其特征在于,在生成目标任务类之后,所述方法还包括:
在所述目标任务类中添加执行顺序描述信息,所述执行顺序描述信息描述在执行所述目标任务类对应的目标任务时,所述目标任务类中包含的各方法函数的执行顺序,并且所述执行顺序基于所述多个子任务类分别对应的子任务的指定执行路径确定。
5.根据权利要求1-4中任一项所述的方法,其特征在于,在生成目标任务类之后,所述方法还包括:
将所述目标任务类添加到任务文件中;
获取服务接口定义语言IDL文件、脚本文件、有向无环图DAG描述文件和所述任务文件:所述DAG描述文件中包含待生成的服务处理对象进行服务处理时需要执行的所述任务文件中包含的多个任务类对应的多个任务的执行依赖关系信息;
将所述服务IDL文件、所述DAG描述文件和所述任务文件,输入给所述脚本文件,通过运行所述脚本文件得到服务处理对象;
保存生成的所述服务处理对象。
6.根据权利要求5所述的方法,其特征在于,在保存生成的所述服务处理对象之后,所述方法还包括:
接收服务调用请求;
将所述服务调用请求输入给所述服务处理对象,以使所述服务处理对象根据所述服务调用请求执行获取所述多个任务的执行依赖关系信息、根据所述执行依赖关系信息生成所述多个任务的执行图、根据生成的所述执行图执行所述多个任务的操作。
7.一种任务生成装置,其特征在于,包括:
上下文类获取模块,用于获取预先创建的上下文类;该上下文类包含多个子任务类的上下文属性参数;
方法函数获取模块,用于获取所述多个子任务类中的方法函数;
目标任务生成模块,用于根据获取的所述上下文类和所述方法函数生成目标任务类,所述目标任务类包含所述上下文类中的各上下文属性参数以及所述方法函数。
8.根据权利要求7所述的方法,其特征在于,上下文类获取模块具体用于:
根据待创建的上下文类的标识定义上下文类;
为定义的所述上下文类设置继承属性,所述继承属性指示继承多个子任务对象的上下文属性参数。
9.一种计算机设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的任务生成方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的任务生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811340403.5A CN109408216A (zh) | 2018-11-12 | 2018-11-12 | 任务生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811340403.5A CN109408216A (zh) | 2018-11-12 | 2018-11-12 | 任务生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109408216A true CN109408216A (zh) | 2019-03-01 |
Family
ID=65473054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811340403.5A Pending CN109408216A (zh) | 2018-11-12 | 2018-11-12 | 任务生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408216A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110288324A (zh) * | 2019-06-28 | 2019-09-27 | 深圳前海微众银行股份有限公司 | 一种业务代码的生成、执行方法及装置 |
CN110413367A (zh) * | 2019-07-31 | 2019-11-05 | 北京字节跳动网络技术有限公司 | 任务创建方法、装置、存储介质及电子设备 |
CN111176802A (zh) * | 2019-07-26 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、电子设备及存储介质 |
CN111309375A (zh) * | 2020-02-11 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 生成远程过程调用工具包的方法、装置、介质和电子设备 |
CN111552469A (zh) * | 2020-04-03 | 2020-08-18 | 北京字节跳动网络技术有限公司 | 应用程序工程中的文件处理方法、装置及电子设备 |
CN111913743A (zh) * | 2019-05-09 | 2020-11-10 | 杭州海康威视数字技术股份有限公司 | 数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484204A (zh) * | 2014-12-12 | 2015-04-01 | 北京国双科技有限公司 | 任务运行方法和装置 |
CN105100117A (zh) * | 2015-08-28 | 2015-11-25 | 北京奇艺世纪科技有限公司 | 一种用于访问组合服务的方法及装置 |
CN105446808A (zh) * | 2015-11-12 | 2016-03-30 | 国云科技股份有限公司 | 一种组合任务完成复杂任务的方法 |
CN108614694A (zh) * | 2016-12-30 | 2018-10-02 | 武汉斗鱼网络科技有限公司 | 一种优化代码的方法和装置 |
-
2018
- 2018-11-12 CN CN201811340403.5A patent/CN109408216A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484204A (zh) * | 2014-12-12 | 2015-04-01 | 北京国双科技有限公司 | 任务运行方法和装置 |
CN105100117A (zh) * | 2015-08-28 | 2015-11-25 | 北京奇艺世纪科技有限公司 | 一种用于访问组合服务的方法及装置 |
CN105446808A (zh) * | 2015-11-12 | 2016-03-30 | 国云科技股份有限公司 | 一种组合任务完成复杂任务的方法 |
CN108614694A (zh) * | 2016-12-30 | 2018-10-02 | 武汉斗鱼网络科技有限公司 | 一种优化代码的方法和装置 |
Non-Patent Citations (2)
Title |
---|
WEIXIN_34183910: "基于ForkJoin构建一个简单易用的并发组件", 《CSDN博客-HTTPS://BLOG.CSDN.NET/WEIXIN_34183910/ARTICLE/DETAILS/92004820》 * |
轩阳俊: "C#多线程笔记(4.2)-组合任务(Task)", 《CSDN博客-HTTPS://BLOG.CSDN.NET/QQ_35445058/ARTICLE/DETAILS/80810946》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913743A (zh) * | 2019-05-09 | 2020-11-10 | 杭州海康威视数字技术股份有限公司 | 数据处理方法及装置 |
CN110288324A (zh) * | 2019-06-28 | 2019-09-27 | 深圳前海微众银行股份有限公司 | 一种业务代码的生成、执行方法及装置 |
WO2020259035A1 (zh) * | 2019-06-28 | 2020-12-30 | 深圳前海微众银行股份有限公司 | 一种业务代码的生成、执行方法及装置 |
CN111176802A (zh) * | 2019-07-26 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、电子设备及存储介质 |
CN111176802B (zh) * | 2019-07-26 | 2023-03-14 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、电子设备及存储介质 |
CN110413367A (zh) * | 2019-07-31 | 2019-11-05 | 北京字节跳动网络技术有限公司 | 任务创建方法、装置、存储介质及电子设备 |
CN111309375A (zh) * | 2020-02-11 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 生成远程过程调用工具包的方法、装置、介质和电子设备 |
CN111309375B (zh) * | 2020-02-11 | 2023-07-04 | 北京字节跳动网络技术有限公司 | 生成远程过程调用工具包的方法、装置、介质和电子设备 |
CN111552469A (zh) * | 2020-04-03 | 2020-08-18 | 北京字节跳动网络技术有限公司 | 应用程序工程中的文件处理方法、装置及电子设备 |
CN111552469B (zh) * | 2020-04-03 | 2023-05-16 | 北京字节跳动网络技术有限公司 | 应用程序工程中的文件处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408216A (zh) | 任务生成方法、装置、设备及存储介质 | |
CN109491777A (zh) | 任务执行方法、装置、设备及存储介质 | |
CN110704178B (zh) | 机器学习模型训练方法、平台、电子设备及可读存储介质 | |
CN105988872A (zh) | 一种cpu资源分配的方法、装置及电子设备 | |
CN108429787B (zh) | 容器部署方法及装置、计算机存储介质、终端 | |
CN103679401A (zh) | 一种流程控制方法、服务器、客户端及系统 | |
CN111061551A (zh) | 节点的合并调度方法、装置、设备及存储介质 | |
CN113225269B (zh) | 基于容器的工作流调度方法、装置、系统及存储介质 | |
CN109684088B (zh) | 云平台资源约束的遥感大数据快速处理任务调度方法 | |
CN117271101B (zh) | 一种算子融合方法、装置、电子设备及存储介质 | |
CN109740765A (zh) | 一种基于亚马逊网络服务器的机器学习系统搭建方法 | |
CN111045797A (zh) | 任务调度执行方法、相关装置和介质 | |
CN110222996A (zh) | 任务分配方法及装置 | |
CN115600676A (zh) | 深度学习模型推理方法、装置、设备及存储介质 | |
CN111953503B (zh) | Nfv资源部署编排方法和网络功能虚拟化编排器 | |
Justino et al. | Outsourcing resource-intensive tasks from mobile apps to clouds: Android and aneka integration | |
CN113051049B (zh) | 任务调度系统、方法、电子设备及可读存储介质 | |
CN111985634B (zh) | 神经网络的运算方法、装置、计算机设备及存储介质 | |
CN106598726A (zh) | 一种多任务管理系统及其分布式部署方法 | |
CN112181689A (zh) | 一种在云端下进行gpu内核程序高效率调度的运行时系统 | |
CN115242871B (zh) | 业务网关的服务方法及装置、存储介质及电子设备 | |
Gonidis et al. | Leveraging platform basic services in cloud application platforms for the development of cloud applications | |
CN115114022A (zh) | 对gpu资源进行使用的方法、系统、设备及介质 | |
CN115713216A (zh) | 一种机器人调度方法及相关设备 | |
CN116302464A (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: 20190301 |