掌桥专利:专业的专利平台
掌桥专利
首页

批处理任务处理方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 10:35:20


批处理任务处理方法、装置、计算机设备和存储介质

技术领域

本申请涉及计算机技术领域,特别是涉及一种批处理任务处理方法、装置、计算机设备和存储介质。

背景技术

Web应用是一种可以通过浏览器访问的应用程序,用户只需要通过浏览器就可以打开WEB应用,不需要再进行应用安装,因此,可以实现应用的快捷访问。

在实际应用,WEB应用一般可以使用JavaScript语言开发。然而,随着计算机技术的发展,WEB应用的功能复杂化,JavaScript作为一种单线程执行的程序文件,逐渐暴露出一些问题。

例如,在批处理任务的场景下,由于批处理任务的数据量大,基于JavaScript的单线程处理批处理任务的方式,会出现效率较低的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种批处理任务处理方法、装置、计算机设备和存储介质。

第一方面,提供一种批处理任务处理方法,该方法包括:

在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,第一程序文件用于供服务器对第一程序文件进行格式转换,得到第二程序文件,其中,第一程序文件为单线程执行的程序文件,第二程序文件为多线程执行的程序文件;

接收第二程序文件,并创建多个子线程;

调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。

在其中一个实施例中,上述创建多个子线程,包括:

根据批处理任务的任务数据的数据量以及单个子线程的数据吞吐量,确定待创建的子线程的目标数量;

根据目标数量创建多个子线程。

在其中一个实施例中,上述调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,包括:

对于各子线程,从批处理任务的任务数据中获取子线程对应的子任务数据;

调用各子线程运行第二程序文件对各子线程对应的子任务数据进行并行处理。

在其中一个实施例中,第二程序文件为wasm文件;子线程为webworker,上述调用各子线程运行第二程序文件对各子线程对应的子任务数据进行并行处理,包括:

在各子线程中加载编译模块webAssembly;

调用各子线程中的编译模块webAssembly运行第二程序文件,对各子线程对应的子任务数据进行并行处理。

在其中一个实施例中,上述将第一程序文件发送至服务器之前,该方法还包括:

根据第一程序文件查询程序文件数据库,根据查询结果确定程序文件数据库中是否存储有与第一程序文件对应的第二程序文件;

将第一程序文件发送至服务器,包括:

若程序文件数据库中未存储与第一程序文件对应的第二程序文件,则将第一程序文件发送至服务器。

在其中一个实施例中,上述方法还包括:

若程序文件数据库中存储有与第一程序文件对应的第二程序文件,则从程序文件数据库中获取第二程序文件。

在其中一个实施例中,在上述接收第二程序文件之后,该方法还包括:

将第一程序文件和第二程序文件对应存储于程序文件数据库。

第二方面,提供一种批处理任务处理方法,该方法包括:

接收终端发送的第一程序文件;第一程序文件为目标WEB应用中批处理任务对应的单线程执行的程序文件;

对第一程序文件进行格式转换处理,得到第二程序文件;第二程序文件为多线程执行的程序文件;

将第二程序文件发送至终端,第二程序文件用于指示终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程。

在其中一个实施例中,上述第一程序文件为JavaScript文件,第二程序文件为wasm文件;上述对第一程序文件进行格式转换处理,得到第二程序文件,包括:

基于抽象语法树解析法,获取第一程序文件的语法表达式;

根据语法表达式以及预设的JavaScript与C语言的语法表达式的对应关系,生成第一程序文件对应的C语言文件;

根据预设的C语言与汇编语言的转换规则,生成C语言文件对应的汇编代码文件;

将汇编代码文件进行二进制处理,得到第二程序文件。

第三方面,提供一种批处理任务处理装置,该装置包括:

获取模块,用于在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,第一程序文件用于供服务器对第一程序文件进行格式转换,得到第二程序文件,其中,第一程序文件为单线程执行的程序文件,第二程序文件为多线程执行的程序文件;

创建模块,用于接收第二程序文件,并创建多个子线程;

调用模块,用于调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。

第四方面,提供一种批处理任务处理装置,该装置包括:

接收模块,用于接收终端发送的第一程序文件;第一程序文件为目标WEB应用中批处理任务对应的单线程执行的程序文件;

转换模块,用于对第一程序文件进行格式转换处理,得到第二程序文件;第二程序文件为多线程执行的程序文件;

发送模块,用于将第二程序文件发送至终端,第二程序文件用于指示终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程。

第五方面,提供一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现上述第一方面、第二方面任一所述的批处理任务处理方法。

第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面、第二方面任一所述的批处理任务处理方法。

上述批处理任务处理方法、装置、计算机设备和存储介质,终端在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,以使供服务器对第一程序文件进行格式转换,得到第二程序文件,接收第二程序文件,并创建多个子线程,调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。在本方法中,终端将第一程序文件发送至服务器以使服务器将第一程序文件转化为多线程可执行的第二程序文件,通过创建多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,避免了传统技术中单线程对批处理任务的任务数据进行处理时导致的卡顿、效率低下的问题,利用多个子线程可以快速处理批处理任务,提高了终端的计算能力和运行效率。

附图说明

图1为一个实施例中批处理任务处理方法的应用环境图;

图2为一个实施例中批处理任务处理方法的流程示意图;

图3为一个实施例中批处理任务处理方法的流程示意图;

图4为一个实施例中批处理任务处理方法的流程示意图;

图5为一个实施例中批处理任务处理方法的流程示意图;

图6为一个实施例中批处理任务处理方法的流程示意图;

图7为一个实施例中批处理任务处理方法的流程示意图;

图8为一个实施例中批处理任务处理方法的流程示意图;

图9为一个实施例中批处理任务处理方法的流程示意图;

图10为一个实施例中批处理任务处理装置的结构框图;

图11为一个实施例中批处理任务处理装置的结构框图;

图12为一个实施例中批处理任务处理装置的结构框图;

图13为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的批处理任务处理方法,可以应用于如图1所示的应用环境中。其中,终端101通过网络与服务器102进行通信。其中,终端101可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑,也可以是浏览器端,服务器102可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

首先,在具体介绍本公开实施例的技术方案之前,先对本公开实施例基于的技术背景或者技术演进脉络进行介绍。通常情况下,在计算机领域,当前的技术背景是:WEB应用一般可以采用JavaScript语言开发。基于该背景,申请人通过对浏览器或终端架构的进行代码解析、以及对浏览器或终端架构进行批处理任务处理仿真,收集仿真数据进行验证,发现JavaScript作为一种单线程执行的程序文件,逐渐暴露出一些问题。例如,在批处理任务的场景下,由于批处理任务的数据量大,基于JavaScript的单线程处理批处理任务的方式,会出现效率较低的问题。因此,基于长期对浏览器或终端的WEB应用的仿真研究,发现JavaScript在处理批处理任务上存在以上的缺陷、以及下述实施例介绍的技术方案,申请人均付出了大量的创造性劳动。

下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。需要说明的是,本申请图2-图6实施例提供的批处理任务处理方法,其执行主体为终端,也可以是批处理任务处理装置,该批处理任务处理装置可以通过软件、硬件或者软硬件结合的方式成为终端的部分或全部。下述方法实施例中,均以执行主体是终端为例来进行说明。

在一个实施例中,如图2所示,提供了一种批处理任务处理方法,涉及的是终端在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,以使供服务器对第一程序文件进行格式转换,得到第二程序文件,接收第二程序文件,并创建多个子线程,调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程的过程,包括以下步骤:

步骤201、在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,第一程序文件用于供服务器对第一程序文件进行格式转换,得到第二程序文件,其中,第一程序文件为单线程执行的程序文件,第二程序文件为多线程执行的程序文件。

其中,目标WEB应用指的是当前终端或浏览器正在运行的WEB应用,常见的WEB应用包括基于浏览器实现的应用服务,例如,搜索引擎网页版、微博网页版、新闻网站等。第一程序文件指的是用于实现WEB应用的开发语言文件,一般的,通过JavaScript实现WEB应用的开发,其中,JavaScript是一种单线程执行的程序语言;第二程序文件指的是可以被多线程执行的程序语言文件,第二程序文件的格式对应与多线程的所执行的程序格式,例如,在本实施例中,子线程可以为工作线程webworker,其中子线程中需要加载编译模块webAssembly,那么第二程序文件为编译模块webAssembly可执行的wasm汇编语言文件,本实施例对此不做限定。

在本实施例中,若目标WEB应用中存在批处理任务,对于单线程执行的JavaScript来说,难以应付庞大的数据量,因此,终端可以针对批处理任务进行程序文件的转换,以得到可被多线程执行的程序文件。具体的,在运行目标WEB应用的过程中,终端获取目标WEB应用中批处理任务对应的第一程序文件,为减少终端的数据处理量,终端可以将第一程序文件发送至服务器,以使服务器根据预设的程序文件转换规则,对第一程序文件进行程序文件的格式转换处理,得到终端所需要的第二程序文件,本实施例对此不做限定。

步骤202、接收第二程序文件,并创建多个子线程。

其中,子线程可以为工作线程webworker。

在本实施例中,终端接收服务器经过格式转换之后发送的第二程序文件,触发创建多个子线程的操作,其中,终端可以根据当前批处理任务的任务数据的数据量以及各子线程的数据吞吐量,确定所需要执行当前批处理任务所需要的子线程的数量;或者,终端还可以根据当前终端直接创建n个子线程,以确保有足够的子线程处理批处理任务的任务数据,在向各子线程分配任务数据之后,若存在多余子线程,则使多余的子线程处于挂起状态,本实施例对此不做限定。

步骤203、调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。

在本实施例中,终端根据创建的子线程,将各子线程对应的批处理任务的子任务数据传输给各子线程,以使子线程并行运行第二程序文件,并对子任务数据进行数据处理,得到各子线程的处理结果,其中,终端还可以控制各子线程在得到处理结果之后,将处理结果返回至目标WEB应用的主线程,以使主线程根据各子线程的处理结果进行汇总,得到当前批处理任务对应的最终结果。

可选地,终端基于主线程调用各子线程运行第二程序文件对批处理任务的任务数据进行并行处理,在给各子线程传输子任务数据时,会出现由于数据量大而导致传输延的问题,为了尽可能避免由于任务数据传输而造成性能损失,在本实施例中,终端在从本地内存中,获取到批处理任务的任务数据之后,确定各子线程对应的子任务数据,可选地,获取各子任务数据对应的内存指针,在调用多个子线程运行第二程序文件时,向各子线程传输各子任务数据对应的内存指针,而非各子任务数据本身,各子线程根据内存指针分别从内存中获取对应的子任务数据,避免了由于传输任务数据导致的性能浪费。

上述批处理任务处理方法中,终端在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,以使供服务器对第一程序文件进行格式转换,得到第二程序文件,接收第二程序文件,并创建多个子线程,调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。在本方法中,终端将第一程序文件发送至服务器以使服务器将第一程序文件转化为多线程可执行的第二程序文件,通过创建多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,避免了传统技术中单线程对批处理任务的任务数据进行处理时导致的卡顿、效率低下的问题,利用多个子线程可以快速处理批处理任务,提高了终端的计算能力和运行效率。

终端在创建多个子线程的过程中,需要考虑子线程的执行性能,在一个实施例中,如图3所示,上述创建多个子线程包括:

步骤301、根据批处理任务的任务数据的数据量以及单个子线程的数据吞吐量,确定待创建的子线程的目标数量。

其中,可以将批处理任务的任务数据预先存储至终端或浏览器的本地内存中,在将批处理任务的任务数据存储至内存中之后,终端可以根据任务数据所占用的内存大小,确定批处理任务的任务数据的数据量。子线程的数据吞吐量由终端本身性能决定,一般来说,每个子线程的数据吞吐量相同,终端可以直接获取子线程的数据吞吐量。

在本实施例中,终端从内存中读取批处理任务,确定任务数据的数据量,获取子线程的数据吞吐量,根据确定的任务数据的数据量以及子线程的数据吞吐量,确定用于处理批处理任务的批处理任务的子线程数量。

步骤302、根据目标数量创建多个子线程。

在本实施例中,终端根据上述步骤确定的子线程数量,创建相应数量的子线程。可选地,在目标WEB应用的主线程中添加各子线程的接口,用于向给子线程传输子任务数据,同时接收各子线程传输的任务结果,本实施例对此不做限定。

在本实施例中,终端根据批处理任务的数据量以及单个子线程的数据吞吐量,创建适应数量的子线程,可以在确保任务处理的处理完成的前提下,平衡每子线程的任务数据处理的能力,不会出现由于子线程分配任务数据超出子线程承载能力,导致子线程执行效率的降低的问题。

在创建适应数量的子线程之后,终端可以基于主线程调用各子线程并行处理批处理任务的任务数据,在一个实施例中,如图4所示,上述调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,包括:

步骤401、对于各子线程,从批处理任务的任务数据中获取子线程对应的子任务数据。

其中,子任务数据指的是各子线程所需要处理的任务数据。

在本实施例中,终端根据批处理任务的任务数据,以及子线程的数量,为各子线程分配相应的子任务数据。可选地,终端还可以获取各子任务数据对应的内存指针,该内存指针用于表征子任务数据在内存中的存储地址,那么相应地,终端传输给各子线程的就可以是子任务数据对应的内存指针,而并非子任务数据本身,避免了由于传输任务数据导致的性能浪费。

步骤402、调用各子线程运行第二程序文件对各子线程对应的子任务数据进行并行处理。

在本实施例中,终端将子任务数据的内存指针以及第二文件传输给各子线程,调用各子线程并行运行第二程序文件,并根据内存指针获取对应的子任务数据进行并行处理,得到各子线程的处理结果。

在本实施例中,终端为各子线程分配子任务数据,并将子任务数据的内存地址传输给各子线程,避免了由于传输任务数据导致的性能浪费,且,可以调用调用各子线程并行运行第二程序文件,提高了批处理任务的处理效率。

具体的,在第二程序文件为wasm文件;子线程为webworker的场景下,在一个实施例中,如图5所示,上述调用各子线程并行运行第二程序文件,对各子线程对应的子任务数据进行并行处理,包括:

步骤501、在各子线程中加载编译模块webAssembly。

在本实施例中,各子线程分别加载其对应的编译模块webAssembly,在各子线程加载编译模块webAssembly完毕之后,会触发向主线程返回指令的操作,即各子线程在加载编译模块webAssembly之后,向主线程返回一个加载完毕的信息,以使主线程开始执行调用子线程进行并行处理的操作。

步骤502、调用各子线程中的编译模块webAssembly运行第二程序文件,对各子线程对应的子任务数据进行并行处理。

在本实施例中,终端的主线程在接收到各子线程中编译模块webAssembly加载完毕的信息之后,将第二程序文件、各子任务对应的子任务数据或子任务数据对应的内存指针分别传输给各个子线程,以使各个子线程的编译模块webAssembly运行第二程序文件,对各子线程对应的子任务数据进行并行处理,其中,可选地,子线程webworker可以对编译模块webAssembly的执行结果进行监听,即,当编译模块webAssembly完成数据处理之后,子线程webworker获取该处理结果,并将该处理结果返回至主线程中,以使主线程对所以子线程webworker返回的处理结果进行汇总处理,得到批处理任务对应的最终结果,本实施例对此不做限定。

在本实施例中,通过在子线程webworker中加载编译模块webAssembly,使得编译模块webAssembly运行第二程序文件,由于第二程序文件为二进制汇编语言文件,比起第一程序文件,编译模块webAssembly运行第二程序文件时,具有更快的执行速度和更高的执行效,提高了各子线程webworker的运行效率。

为进一步提高第一程序文件的预处理效率,即提高第一程序文件的转换效率,在一个实施例中,如图6所示,上述将第一程序文件发送至服务器之前,该方法还包括:

步骤601、根据第一程序文件查询程序文件数据库,根据查询结果确定程序文件数据库中是否存储有与第一程序文件对应的第二程序文件。

其中,程序文件数据库为预先设定的终端本地数据库,用于存储第一程序文件、第二程序文件、以及第一程序文件与第二程序文件的对应关系。

在本实施例中,终端在获取到的第一程序文件之后,可以先从程序文件数据库中查询是否已经存储有第一程序文件;其中,终端可以通过将当前第一程序文件与程序文件数据库中候选第一程序文件逐字符对比的方法,确定程序文件数据库中是否有候选第一程序文件与当前第一程序文件吻合,从而来确定程序文件数据库中是否有与当前第一程序文件对应的第二程序文件。

那么将第一程序文件发送至服务器,包括:

步骤602、若程序文件数据库中未存储与第一程序文件对应的第二程序文件,则将第一程序文件发送至服务器。

在本实施例中,若程序文件数据库没有任意一个候选第一程序文件与当前第一程序文件吻合,即程序文件库中并不存在与当前第一程序文件对应的第二程序文件,那么,终端将该当前第一程序文件发送至服务器,以使服务器根据第一程序文件执行相应的操作。

在本实施例中,在终端获取到第一程序文件之后,先从本地的程序文件数据库中查询是否存储有与当前第一程序文件对应的第二程序文件,在没有的情况下再执行向服务器发送第一程序文件的操作,确保了向服务器发送第一程序文件操作的有效性。

相应地,终端在根据第一程序文件查询程序文件数据库,根据查询结果确定程序文件数据库中是否存储有与第一程序文件对应的第二程序文件,存在另外一种情况,在一个实施例中,上述方法还包括:

若程序文件数据库中存储有与第一程序文件对应的第二程序文件,则从程序文件数据库中获取第二程序文件。

在本实施例中,若程序文件数据库存储有候选第一程序文件与当前第一程序文件吻合,即程序文件库中存在与当前第一程序文件对应的第二程序文件,那么,终端将可以直接从程序文件数据库中获取第二程序文件该第二程序文件,并将其作为当前第一程序文件对应的第二程序文件,以执行后续调用多个子线程运行第二程序文件进行批处理任务的任务数据处理的操作。

在本实施例中,在终端获取到第一程序文件之后,先从本地的程序文件数据库中查询是否存储有与当前第一程序文件对应的第二程序文件,在存在其对应的第二程序文件情况下,直接从程序文件数据库中获取第二程序文件,不需要再向服务器发送第一程序文件进行格式转换处理,提高了第二程序文件获取的效率。

那么相应地,实现上述从本地程序文件数据库中查询是否存在与当前第一程序文件对应的第二程序文件的前提包括,在一个实施例中,在上述接收第二程序文件之后,该方法还包括:

将第一程序文件和第二程序文件对应存储于程序文件数据库。

在本实施例中,终端在接收到服务器返回的第二程序文件之后,根据该第二程序文件,获取其对应的第一程序文件,并构建第一程序文件与第二程序文件之间的对应关系,从而将该对应关系、第一程序文件、以及第二程序文件均存储至程序文件数据库中,其中程序文件数据库即为终端本地内存中的数据库,本实施例对此不做限定。

在本实施例中,终端在接收到服务器返回的第二程序文件之后,将第二程序文件、其对应的第一程序文件、以及第二程序文件与第一程序文件之间的对应关系存储至本地程序文件数据库中,为上述步骤提供了基础,有利于提高第二程序文件的获取效率,从而进一步提高批处理任务的处理效率。

下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。需要说明的是,本申请图7-图8实施例提供的批处理任务处理方法,其执行主体为服务器,也可以是批处理任务处理装置,该批处理任务处理装置可以通过软件、硬件或者软硬件结合的方式成为服务器的部分或全部。下述方法实施例中,均以执行主体是服务器为例来进行说明。

在一个实施例中,如图7所示,提供了一种批处理任务处理方法,涉及的是服务器接收终端发送的第一程序文件,对第一程序文件进行格式转换处理,得到第二程序文件,将第二程序文件发送至终端,第二程序文件用于供终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程的过程,包括以下步骤:

步骤701、接收终端发送的第一程序文件;第一程序文件为目标WEB应用中批处理任务对应的单线程执行的程序文件。

在本实施例中,服务器接收终端发送的第一程序文件,其中,第一程序文件指的是单线程执行的程序文件,一般的,WEB应用的开发通过JavaScript实现,而JavaScript文件即为一种单线程执行的程序语言文件。

步骤702、对第一程序文件进行格式转换处理,得到第二程序文件;第二程序文件为多线程执行的程序文件。

其中,格式转换处理指的是根据多线程可执行的格式文件类型,将单线程执行的第一程序文件转换为可被多线程处理的第二程序文件。

在本实施例中,子线程可以为工作线程webworker,其中子线程中需要加载编译模块webAssembly,那么第二程序文件为编译模块webAssembly可执行的wasm汇编语言文件。服务器根据JavaScript文件与wasm汇编语言文件之间的格式转换规则,将JavaScript文件转换为wasm汇编语言文件。其中,服务器还可以将JavaScript文件先转换为中间程序文件,再将中间程序文件转换为wasm汇编语言文件,本实施例对此不做限定。

步骤703、将第二程序文件发送至终端,第二程序文件用于指示终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程。

在本实施例中,服务器在得到格式转换后的第二程序文件之后,将该第二程序文件返回至终端,以使终端调用多个子线程并行运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程,本实施例对此不做赘述。

上述批处理任务处理方法,服务器接收终端发送的第一程序文件之后,对第一程序文件进行格式转换处理,得到第二程序文件,并将第二程序文件发送至终端,第二程序文件用于供终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程。由于,第二程序文件为多线程执行的程序文件,使得终端在接收到多线程编译模块可执行的第二程序文件,可以创建多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,避免了传统技术中单线程对批处理任务的任务数据进行处理时导致的卡顿、效率低下的问题,利用多个子线程可以快速处理批处理任务,提高了终端的计算能力和运行效率。

在上述第一程序文件为JavaScript文件,第二程序文件为wasm文件的场景下,服务器在将第一程序文件转换成第二程序文件包括,在一个实施例中,如图8所示,上述对第一程序文件进行格式转换处理,得到第二程序文件,包括:

步骤801、基于抽象语法树解析法,获取第一程序文件的语法表达式。

在本实施例中,服务器可以通过开源的npm包将JavaScript文件编译成C语言代码,其中,npm包可以为“ts2c”。其中,ts2c中将JavaScript文件编译成C语言代码的具体过程包括,服务器将JavaScript文件进行AST语法树解析,获取解析后的JavaScript文件中所有的语法表达式,其中,JavaScript语法表达式可以包括var a=1,本实施例对此不做限定。

步骤802、根据语法表达式以及预设的JavaScript与C语言的语法表达式的对应关系,生成第一程序文件对应的C语言文件。

其中,预设的JavaScript与C语言的语法表达式的对应关系为根据开发经验,预先设定的两种编程语言的语法表达式的对应关系。

在本实施例中,服务器根据预设的JavaScript语言与C语言的语法表达式对应关系,将JavaScript文件中所有的语法表达式转换为C语言的语法表达式,从而生成C语言文件。示例地,预设的JavaScript语言与C语言的语法表达式对应关系可以为,JavaScript表达式中,var a=1,对应的C语言表达式是int a=1,本实施例对此不做限定。

步骤803、根据预设的C语言与汇编语言的转换规则,生成C语言文件对应的汇编代码文件。

在本实施例中,服务器可以基于开源软件Emscripten的转换规则,将C语言文件编译成汇编代码文件,其中,包括服务器将C语言文件中的所有头文件代码合并到指定的目标程序中,通过开源软件Emscripten编译该指定的目标程序,从而得到转换后的特定汇编代码assembly code。

步骤804、将汇编代码文件进行二进制处理,得到第二程序文件。

在本实施例中,由于工作线程webworker编译模块webAssembly可执行的是二进制的语言文件,服务器在得到特定汇编代码assembly code之后,对该特定汇编代码assemblycode进行二进制化,生成第二程序文件,这里第二程序文件指的是wasm文件,本实施例对此不做限定。

在本实施例中,服务器根据预设的格式转换规则,将第一程序文件转换为第二程序文件,在第一程序文件为JavaScript文件、第二程序文件为wasm文件的场景下,由于工作线程webworker编译模块webAssembly执行的是二进制的wasm文件,二进制文件基本接近机器码,因此,在根据二进制的wasm文件运行批处理任务的任务数据过程中,终端可以很快速的读取/运行,提高了批处理任务的任务处理效率。

上述实施例提供的以服务器为执行主体的批处理任务处理方法,其实现原理和技术效果与上述以终端为执行主体的批处理任务处理方法实施例类似,在此不再赘述。

为了更好的说明上述方法,如图9所示,本实施例提供一种批处理任务处理方法,具体包括:

步骤1101、在运行目标WEB应用的过程中,终端获取目标WEB应用中批处理任务对应的第一程序文件;

步骤1102、终端根据第一程序文件查询程序文件数据库,根据查询结果确定程序文件数据库中是否存储有与第一程序文件对应的第二程序文件;

步骤1103、若程序文件数据库中未存储与第一程序文件对应的第二程序文件,则终端将第一程序文件发送至服务器;

步骤1104、终端将第一程序文件和第二程序文件对应存储于程序文件数据库;

步骤1105、若程序文件数据库中存储有与第一程序文件对应的第二程序文件,则终端从程序文件数据库中获取第二程序文件;

步骤1106、服务器对第一程序文件进行格式转换处理,得到第二程序文件;

步骤1107、服务器将第二程序文件发送至终端;

步骤1108、终端根据批处理任务的任务数据的数据量以及单个子线程的数据吞吐量,确定待创建的子线程的目标数量;

步骤1109、终端根据目标数量创建多个子线程;

步骤1110、对于各子线程,终端从批处理任务的任务数据中获取子线程对应的子任务数据;

步骤1111、终端在各子线程中加载编译模块webAssembly;

步骤1112、终端调用各子线程中的编译模块webAssembly运行第二程序文件,对各子线程对应的子任务数据进行并行处理并将各子线程的处理结果传递至目标WEB应用的主线程。

在本实施例中,由于,第二程序文件为多线程执行的程序文件,使得终端在接收到多线程编译模块可执行的第二程序文件,可以创建多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,避免了传统技术中单线程对批处理任务的任务数据进行处理时导致的卡顿、效率低下的问题,利用多个子线程可以快速处理批处理任务,提高了终端的计算能力和运行效率。

上述实施例提供的批处理任务处理方法,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

应该理解的是,虽然图2-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-9中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图10所示,提供了一种批处理任务处理装置1100,包括:获取模块1101、创建模块1102和调用模块1103,其中:

获取模块1101,用于在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,第一程序文件用于供服务器对第一程序文件进行格式转换,得到第二程序文件,其中,第一程序文件为单线程执行的程序文件,第二程序文件为多线程执行的程序文件;

创建模块1102,用于接收第二程序文件,并创建多个子线程;

调用模块1103,用于调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。

在一个实施例中,创建模块1102,用于根据批处理任务的任务数据的数据量以及单个子线程的数据吞吐量,确定待创建的子线程的目标数量;根据目标数量创建多个子线程。

在一个实施例中,调用模块1103,用于对于各子线程,从批处理任务的任务数据中获取子线程对应的子任务数据;调用各子线程运行第二程序文件对各子线程对应的子任务数据进行并行处理。

在一个实施例中,第二程序文件为wasm文件;子线程为webworker,调用模块03,用于在各子线程中加载编译模块webAssembly;调用各子线程中的编译模块webAssembly运行第二程序文件,对各子线程对应的子任务数据进行并行处理。

在一个实施例中,获取模块1101,还用于根据第一程序文件查询程序文件数据库,根据查询结果确定程序文件数据库中是否存储有与第一程序文件对应的第二程序文件;若程序文件数据库中未存储与第一程序文件对应的第二程序文件,则将第一程序文件发送至服务器。

在一个实施例中,获取模块1101,还用于若程序文件数据库中存储有与第一程序文件对应的第二程序文件,则从程序文件数据库中获取第二程序文件。

在一个实施例中,如图11所示,上述批处理任务处理装置1100还包括存储模块1104;

存储模块1104,用于将第一程序文件和第二程序文件对应存储于程序文件数据库。

在一个实施例中,如图12所示,提供了一种批处理任务处理装置1200,包括:接收模块1201、转换模块1202和发送模块1203,其中:

接收模块1201,用于接收终端发送的第一程序文件;第一程序文件为目标WEB应用中批处理任务对应的单线程执行的程序文件;

转换模块1202,用于对第一程序文件进行格式转换处理,得到第二程序文件;第二程序文件为多线程执行的程序文件;

发送模块1203,用于将第二程序文件发送至终端,第二程序文件用于指示终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程。

在一个实施例中,上述第一程序文件为JavaScript文件,第二程序文件为wasm文件;转换模块1202,用于基于抽象语法树解析法,获取第一程序文件的语法表达式;根据语法表达式、以及预设的JavaScript与C语言的语法表达式的对应关系,生成第一程序文件对应的C语言文件;根据预设的C语言与汇编语言的转换规则,生成C语言文件对应的汇编代码文件;将汇编代码文件进行二进制处理,得到第二程序文件。

关于批处理任务处理装置的具体限定可以参见上文中对于批处理任务处理方法的限定,在此不再赘述。上述批处理任务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在本申请的一个实施例中,提供了一种计算机设备,该计算机设备可以为终端或者服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器和存储器。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机程序被处理器执行时以实现一种批处理任务处理方法。

本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,第一程序文件用于供服务器对第一程序文件进行格式转换,得到第二程序文件,其中,第一程序文件为单线程执行的程序文件,第二程序文件为多线程执行的程序文件;

接收第二程序文件,并创建多个子线程;

调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。

上述实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

接收终端发送的第一程序文件;第一程序文件为目标WEB应用中批处理任务对应的单线程执行的程序文件;

对第一程序文件进行格式转换处理,得到第二程序文件;第二程序文件为多线程执行的程序文件;

将第二程序文件发送至终端,第二程序文件用于指示终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程。

上述实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

在运行目标WEB应用的过程中,获取目标WEB应用中批处理任务对应的第一程序文件,并将第一程序文件发送至服务器,第一程序文件用于供服务器对第一程序文件进行格式转换,得到第二程序文件,其中,第一程序文件为单线程执行的程序文件,第二程序文件为多线程执行的程序文件;

接收第二程序文件,并创建多个子线程;

调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,并将各子线程的处理结果传递至目标WEB应用的主线程。

上述实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

接收终端发送的第一程序文件;第一程序文件为目标WEB应用中批处理任务对应的单线程执行的程序文件;

对第一程序文件进行格式转换处理,得到第二程序文件;第二程序文件为多线程执行的程序文件;

将第二程序文件发送至终端,第二程序文件用于指示终端创建多个子线程,并调用多个子线程运行第二程序文件对批处理任务的任务数据进行并行处理,将各子线程的处理结果传递至目标WEB应用的主线程。

上述实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 批处理任务处理方法、装置、计算机设备和存储介质
  • 批处理方法、装置、计算机设备和存储介质
技术分类

06120112607978