CN113127057A - 多任务并行执行的方法和装置 - Google Patents

多任务并行执行的方法和装置 Download PDF

Info

Publication number
CN113127057A
CN113127057A CN202010048351.5A CN202010048351A CN113127057A CN 113127057 A CN113127057 A CN 113127057A CN 202010048351 A CN202010048351 A CN 202010048351A CN 113127057 A CN113127057 A CN 113127057A
Authority
CN
China
Prior art keywords
execution
task
execution time
tasks
combination
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.)
Granted
Application number
CN202010048351.5A
Other languages
English (en)
Other versions
CN113127057B (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 Jingdong Zhenshi Information Technology Co Ltd
Original Assignee
Beijing Jingdong Zhenshi Information 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 Jingdong Zhenshi Information Technology Co Ltd filed Critical Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority to CN202010048351.5A priority Critical patent/CN113127057B/zh
Publication of CN113127057A publication Critical patent/CN113127057A/zh
Application granted granted Critical
Publication of CN113127057B publication Critical patent/CN113127057B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种多任务并行执行的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取每个任务的执行时间,并根据执行时间对该多任务进行拆分合并以得到任务组合;根据该任务组合并行执行该多任务,并记录该多任务的执行时间;若该多任务的执行时间小于之前的任务组合的执行时间,则将该任务组合作为该多任务的执行模式,并按照该执行模式并行执行该多任务。该实施方式能够无需对代码及现有业务做调整,通过任务的执行及轨迹记录,并监控任务的执行效率,对任务的执行按照执行时间效率进行重新编排组合拆分,从而优化了执行效率,加快了***的执行效率并根据业务变更随时调整任务的执行组合,极大的改善了整体任务的执行速度。

Description

多任务并行执行的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种多任务并行执行的方法和装置。
背景技术
业务***代码执行的过程中,经常需要进行方法调用,若其中涉及多个方法联合操作,且其中有部分方法处理时间较长,则会导致业务代码总体执行时间变长,从而严重影响业务代码执行效率。此时,需要对业务代码中的多个方法进行组合异步优化,以对整个业务代码进行性能优化。
目前,一般采用的处理方案为多线程或者采用异步执行框架等来对业务代码进行处理,以减少业务代码的执行时间。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1、采用线程池多线程对业务代码进行处理的方式,对代码的耦合性大,而且对于原有的业务代码需要进行重构处理,且需要经验丰富的多线程开发人员进行开发、上线、测试等,对原有业务***影响较大;
2、采用异步执行框架(比如spring异步任务框架)对业务代码进行处理的方式,对代码耦合性较高,且返回对象相对单一,如果有旧的业务***需要进行多任务异步化处理,则需要改动原有的代码进行重构,既浪费开发时间也需要重新进行测试,且接入、维护及修改都相对复杂。
综上,现有的两种方案灵活性较差,无法根据方法性能及时进行灵活调整及自动化优化处理。
发明内容
有鉴于此,本发明实施例提供一种多任务并行执行的方法和装置,能够无需对代码及现有业务做调整,通过任务的执行及轨迹记录,并监控任务的执行效率,对任务的执行按照执行时间效率进行重新编排组合拆分,从而优化了执行效率,加快了***的执行效率并根据业务变更随时调整任务的执行组合,极大的改善了整体任务的执行速度。
为实现上述目的,根据本发明实施例的一个方面,提供了一种多任务并行执行的方法。
一种多任务并行执行的方法,包括:获取每个任务的执行时间,并根据执行时间对所述多任务进行拆分合并以得到任务组合;根据所述任务组合并行执行所述多任务,并记录所述多任务的执行时间;若所述多任务的执行时间小于之前的任务组合的执行时间,则将所述任务组合作为所述多任务的执行模式,并按照所述执行模式并行执行所述多任务。
可选地,根据执行时间对所述多任务进行拆分合并以得到任务组合包括:以执行时间中的最大值作为基数对所述多任务进行拆分合并以得到任务组合。
可选地,对所述多任务进行拆分合并包括:根据每个任务的执行时间由大到小对任务进行排序以得到任务队列;依次从所述任务队列中取出除执行时间最大的任务外的前后两端的两个任务;将所述两个任务的执行时间的和值与执行时间的最大值进行比较,若所述最大值与所述和值之比满足预设的第一阈值,则将所述两个任务进行拆分合并。
可选地,得到任务组合之后,还包括:将任务组合中与之前的任务组合不一致的任务执行顺序进行记录。
可选地,所述任务组合包括多个并行执行的步骤,且所述步骤的执行时间中的最大值与最小值的比值满足预设的第二阈值。
可选地,通过对代码进行注解配置或可拓展标记语言配置的方式来实现多任务的并行执行。
可选地,通过对每个任务对应的代码进行反射代理以获取每个任务的执行时间。
根据本发明实施例的另一方面,提供了一种多任务并行执行的装置。
一种多任务并行执行的装置,包括:任务组合模块,用于获取每个任务的执行时间,并根据执行时间对所述多任务进行拆分合并以得到任务组合;时间记录模块,用于根据所述任务组合并行执行所述多任务,并记录所述多任务的执行时间;模式确定模块,用于若所述多任务的执行时间小于之前的任务组合的执行时间,则将所述任务组合作为所述多任务的执行模式,并按照所述执行模式并行执行所述多任务。
可选地,所述任务组合模块还用于:以执行时间中的最大值作为基数对所述多任务进行拆分合并以得到任务组合。
可选地,所述任务组合模块还用于:根据每个任务的执行时间由大到小对任务进行排序以得到任务队列;依次从所述任务队列中取出除执行时间最大的任务外的前后两端的两个任务;将所述两个任务的执行时间的和值与执行时间的最大值进行比较,若所述最大值与所述和值之比满足预设的第一阈值,则将所述两个任务进行拆分合并。
可选地,还包括执行记录模块,用于:得到任务组合之后,将任务组合中与之前的任务组合不一致的任务执行顺序进行记录。
可选地,所述任务组合包括多个并行执行的步骤,且所述步骤的执行时间中的最大值与最小值的比值满足预设的第二阈值。
可选地,通过对代码进行注解配置或可拓展标记语言配置的方式来实现多任务的并行执行。
可选地,通过对每个任务对应的代码进行反射代理以获取每个任务的执行时间。
根据本发明实施例的又一方面,提供了一种多任务并行执行的电子设备。
一种多任务并行执行的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的多任务并行执行的方法。
根据本发明实施例的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的多任务并行执行的方法。
上述发明中的一个实施例具有如下优点或有益效果:通过获取每个任务的执行时间,并根据执行时间对该多任务进行拆分合并以得到任务组合;然后,根据该任务组合并行执行该多任务,并记录该多任务的执行时间;最后,若该多任务的执行时间小于之前的任务组合的执行时间,则将该任务组合作为该多任务的执行模式,并按照该执行模式并行执行该多任务,可以无需对代码及现有业务做调整,通过任务的执行及轨迹记录,并监控任务的执行效率,对任务的执行按照执行时间效率进行重新编排组合拆分,从而优化了执行效率,加快了***的执行效率并根据业务变更随时调整任务的执行组合,极大的改善了整体任务的执行速度。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的多任务并行执行的方法的主要步骤示意图;
图2是本发明实施例的核心架构流程图;
图3是本发明实施例的任务记录流程图;
图4是本发明实施例的任务执行轨迹分析流程图;
图5是本发明实施例的任务编排流程图;
图6是本发明实施例的任务执行流程图;
图7是根据本发明实施例的多任务并行执行的装置的主要模块示意图;
图8是本发明实施例可以应用于其中的示例性***架构图;
图9是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的多任务并行执行的方法的主要步骤示意图。如图1所示,本发明实施例的多任务并行执行的方法主要包括如下的步骤S101至步骤S103。
步骤S101:获取每个任务的执行时间,并根据执行时间对该多任务进行拆分合并以得到任务组合;
步骤S102:根据该任务组合并行执行该多任务,并记录该多任务的执行时间;
步骤S103:若该多任务的执行时间小于之前的任务组合的执行时间,则将该任务组合作为该多任务的执行模式,并按照该执行模式并行执行该多任务。
根据本发明的一个实施例,在根据执行时间对该多任务进行拆分合并以得到任务组合时,具体可以是以执行时间中的最大值作为基数对该多任务进行拆分合并以得到任务组合。
根据本发明的实施例,在对多任务进行拆分合并时,具体可以按照以下步骤来执行:
根据每个任务的执行时间由大到小对任务进行排序以得到任务队列;
依次从所述任务队列中取出除执行时间最大的任务外的前后两端的两个任务;
将所述两个任务的执行时间的和值与执行时间的最大值进行比较,若所述最大值与所述和值之比满足预设的第一阈值,则将所述两个任务进行拆分合并。
根据本发明的另一个实施例,在得到任务组合之后,还可以将任务组合中与之前的任务组合不一致的任务执行顺序进行记录。
根据本发明的又一个实施例,该任务组合包括多个并行执行的步骤,且步骤的执行时间中的最大值与最小值的比值满足预设的第二阈值。
根据本发明的技术方案,通过对代码进行注解配置或可拓展标记语言配置的方式来实现多任务的并行执行。
根据本发明实施例的技术方案,通过对每个任务对应的代码进行反射代理以获取每个任务的执行时间。
下面结合具体实施例介绍本发明的具体实施过程。本发明主要是解决对代码完全无侵入,不需要改动任何原有逻辑及代码就可以实现多任务处理。可以根据业务需要及***的性能随时调整变更任务的处理方式,对线上任务可以进行灵活自动化切换,调整***的不同执行策略来动态优化***的执行效率。
图2是本发明实施例的核心架构流程图。如图2所示,本发明的实施例中,线上运行多个任务,通过将该多个任务组合到多个操作步骤中来进行任务编排,从而实现多任务并行处理。每个步骤的处理时间可能千差万别,每个步骤的运行效率严重影响整个任务的整体效率。
记录每一个步骤的操作时间及任务的相关信息,通过对任务的执行记录进行执行分析。判断每一个步骤的执行时间,再根据每一个任务的执行时间比对以进行任务编排,按照最大原则调整合理的异步化多任务处理顺序。
执行方面采用无侵入式对代码进行配置调整。采用反射代理等方式对编排的任务代理并进行多任务并行处理。记录每次编排任务的最终效率(执行时间)和每个详细步骤的效率(执行时间)。通过此记录数据进行调优判断,计算该多任务执行的最终时间和最大时间比率,如果比率过大则进行性能报警。
本发明可通过记录不同任务的运行轨迹及执行信息作为参考依据来进行任务编排。通过效率排序整合的方式进行重新计算,计算原有多任务组合的执行时间和重新组合后的执行时间来进行调整,调整为最合理的时间来并行执行该多任务。
根据本发明实施例的技术方案,主要有以下几个模块组成:无侵入代码设置、任务记录、执行轨迹分析、智能编排、任务执行、性能监控报警。下面分别介绍每个模块的实现过程。
1)无侵入代码设置
***运行过程中需要对现有***进行改造升级,此时需要对代码无缝接入或者少量的配置来完成任务的执行优化,此时就需要对代码进行无侵入式配置来减少对现有业务的改动,需要不对现有业务进行任何多余改造就可以进行多任务智能处理。优先通过注解配置或xml配置的方式来实现对现有业务进行改造处理。可以通过动态配置生效的操作,控制线上任务执行的顺序及异步化处理。
代码无侵入设置的作用主要是对任务进行相关的收集,控制哪些任务需要进行动态执行操作,以及执行的顺序与组合关系。通过反射代理对原有任务的对象、方法、返回信息等进行代理操作。
2)任务记录
图3是本发明实施例的任务记录流程图。如图3,任务执行时需要对后续的任务组合编排和执行做一些参考和依据,所以需要记录任务的一些信息,包括任务执行时获取相关任务的参数数据,并记录任务的执行顺序及组合步骤,记录执行的队列数以及任务编排数,最后记录任务的执行时间。
3)执行轨迹分析
图4是本发明实施例的任务执行轨迹分析流程图。执行轨迹分析是对具体异步化执行的任务执行的拆分任务轨迹进行分析,分析该多个任务组合前与组合后的差别以及变更的情况,便于了解该多个任务的执行情况。
获取任务记录数据后,按照执行时间效率排序并记录最大最小值。按照最大值作为基数进行任务拆分合并,取除最大值外前后两头的两个任务相加并与最大值进行比较,如果最大值/和值在0.8至1.5(可根据实际情况调整)之间,则表示任务合理执行可以进行拆分合并。
任务拆分合并后如果执行顺序与原有执行不一致,则记录不一致信息。通过worker轮询的方式扫描此任务数据,对此任务进行重运算并对原有任务进行重运算。再把两个不同的运算结果进行比较,如果新组合的执行效率更优则记录此新的任务记录,当此任务记录达到一定的数量后则线上任务直接切换至新的执行任务模式。
4)智能编排
图5是本发明实施例的任务编排流程图。根据任务记录和轨迹分析,得出不同任务不同的执行轨迹,计算不同的执行轨迹对应的执行时间比较。如果差距较大,则重新按照差值组合。得出最接近于最大值的差值匹配值。便于此编排组合能够根据业务需要得出最优的执行任务计划。
查询相关任务记录,包括任务操作记录、执行轨迹等。分类不同的任务步骤,并把每一步的执行时间进行比较记录最大最小值,及计算最大最小值的比率。
如果比率大于2(可根据实际进行调整)说明此任务执行效率较差,则记录差值及执行时间和任务详细的执行轨迹信息。如果小于2说明此任务在合理范围内暂不做处理。
接下来获取该多任务的执行时间,比较多任务的执行时间与最大时间的比率,判断比率是否正常,如果正常则记录一条日志,如果不正常则按照任务执行时间的排序,以最大时间为基点组合拆分该多任务并记录该多任务重新编排的结果。
5)任务执行
图6是本发明实施例的任务执行流程图。执行前的初始化操作主要处理在程序启动时对注解及配置文件的类进行一层代理封装,同时进行线程池的初始化工作,通过反射机制对方法及返回值进行代理封装。
对任务线程池进行创建设置,设置完成后需要对相关的业务进行APE(Asynchronous parallel execute,用java实现的一种注解代理框架)注解解析,然后生成注解class(类)对应的代理对象。对方法、结果对象进行拦截处理并缓存相关代理对象。
方法执行时首先判断是否进行了APE代理,如果不存在则正常执行,如存在则获取此方法的代理进行异步化执行,通过Future机制把最终的结果代理对象进行封装返回,通过操作代理对象得到最终的执行结果。其中,Future是java的一个工具类,执行A和B方法的时候,在执行A的时候可以不用等待A执行完就开始执行B操作。
6)性能监控报警
性能监控报警主要是监控任务的记录情况,包括任务的执行变更、执行时间、执行顺序。通过轮询的方式进行周期性的监控,如果发现性能差别较大及存在任务变更则进行邮件或短信告知相关人员,内容包括任务执行的相关信息,包括执行时间,执行顺序步骤等信息,并记录一条告警信息便于在***中进行展示查看。
图7是根据本发明实施例的多任务并行执行的装置的主要模块示意图。如图7所示,本发明实施例的多任务并行执行的装置700主要包括任务组合模块701、时间记录模块702和模式确定模块703。
任务组合模块701,用于获取每个任务的执行时间,并根据执行时间对所述多任务进行拆分合并以得到任务组合;
时间记录模块702,用于根据所述任务组合并行执行所述多任务,并记录所述多任务的执行时间;
模式确定模块703,用于若所述多任务的执行时间小于之前的任务组合的执行时间,则将所述任务组合作为所述多任务的执行模式,并按照所述执行模式并行执行所述多任务。
根据本发明的一个实施例,任务组合模块701还可以用于:
以执行时间中的最大值作为基数对所述多任务进行拆分合并以得到任务组合。
根据本发明的另一实施例,任务组合模块701还可以用于:
根据每个任务的执行时间由大到小对任务进行排序以得到任务队列;
依次从所述任务队列中取出除执行时间最大的任务外的前后两端的两个任务;
将所述两个任务的执行时间的和值与执行时间的最大值进行比较,若所述最大值与所述和值之比满足预设的第一阈值,则将所述两个任务进行拆分合并。
根据本发明的又一个实施例,多任务并行执行的装置700还可以包括执行记录模块(图中未示出),用于:
得到任务组合之后,将任务组合中与之前的任务组合不一致的任务执行顺序进行记录。
根据本发明的实施例,所述任务组合包括多个并行执行的步骤,且所述步骤的执行时间中的最大值与最小值的比值满足预设的第二阈值。
根据本发明的实施例,通过对代码进行注解配置或可拓展标记语言配置的方式来实现多任务的并行执行。
根据本发明的技术方案,通过对每个任务对应的代码进行反射代理以获取每个任务的执行时间。
根据本发明实施例的技术方案,通过获取每个任务的执行时间,并根据执行时间对该多任务进行拆分合并以得到任务组合;然后,根据该任务组合并行执行该多任务,并记录该多任务的执行时间;最后,若该多任务的执行时间小于之前的任务组合的执行时间,则将该任务组合作为该多任务的执行模式,并按照该执行模式并行执行该多任务,可以无需对代码及现有业务做调整,通过任务的执行及轨迹记录,并监控任务的执行效率,对任务的执行按照执行时间效率进行重新编排组合拆分,从而优化了执行效率,加快了***的执行效率并根据业务变更随时调整任务的执行组合,极大的改善了整体任务的执行速度。
图8示出了可以应用本发明实施例的多任务并行执行的方法或多任务并行执行的装置的示例性***架构800。
如图8所示,***架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的多任务并行执行的方法一般由服务器805执行,相应地,多任务并行执行的装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图9,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机***900的结构示意图。图9示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机***900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有***900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括任务组合模块、时间记录模块和模式确定模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,任务组合模块还可以被描述为“获取每个任务的执行时间,并根据执行时间对所述多任务进行拆分合并以得到任务组合的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取每个任务的执行时间,并根据执行时间对所述多任务进行拆分合并以得到任务组合;根据所述任务组合并行执行所述多任务,并记录所述多任务的执行时间;若所述多任务的执行时间小于之前的任务组合的执行时间,则将所述任务组合作为所述多任务的执行模式,并按照所述执行模式并行执行所述多任务。
根据本发明实施例的技术方案,通过获取每个任务的执行时间,并根据执行时间对该多任务进行拆分合并以得到任务组合;然后,根据该任务组合并行执行该多任务,并记录该多任务的执行时间;最后,若该多任务的执行时间小于之前的任务组合的执行时间,则将该任务组合作为该多任务的执行模式,并按照该执行模式并行执行该多任务,可以无需对代码及现有业务做调整,通过任务的执行及轨迹记录,并监控任务的执行效率,对任务的执行按照执行时间效率进行重新编排组合拆分,从而优化了执行效率,加快了***的执行效率并根据业务变更随时调整任务的执行组合,极大的改善了整体任务的执行速度。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种多任务并行执行的方法,其特征在于,包括:
获取每个任务的执行时间,并根据执行时间对所述多任务进行拆分合并以得到任务组合;
根据所述任务组合并行执行所述多任务,并记录所述多任务的执行时间;
若所述多任务的执行时间小于之前的任务组合的执行时间,则将所述任务组合作为所述多任务的执行模式,并按照所述执行模式并行执行所述多任务。
2.根据权利要求1所述的方法,其特征在于,根据执行时间对所述多任务进行拆分合并以得到任务组合包括:
以执行时间中的最大值作为基数对所述多任务进行拆分合并以得到任务组合。
3.根据权利要求1或2所述的方法,其特征在于,对所述多任务进行拆分合并包括:
根据每个任务的执行时间由大到小对任务进行排序以得到任务队列;
依次从所述任务队列中取出除执行时间最大的任务外的前后两端的两个任务;
将所述两个任务的执行时间的和值与执行时间的最大值进行比较,若所述最大值与所述和值之比满足预设的第一阈值,则将所述两个任务进行拆分合并。
4.根据权利要求1所述的方法,其特征在于,得到任务组合之后,还包括:
将任务组合中与之前的任务组合不一致的任务执行顺序进行记录。
5.根据权利要求1所述的方法,其特征在于,所述任务组合包括多个并行执行的步骤,且所述步骤的执行时间中的最大值与最小值的比值满足预设的第二阈值。
6.根据权利要求1所述的方法,其特征在于,通过对代码进行注解配置或可拓展标记语言配置的方式来实现多任务的并行执行。
7.根据权利要求1所述的方法,其特征在于,通过对每个任务对应的代码进行反射代理以获取每个任务的执行时间。
8.一种多任务并行执行的装置,其特征在于,包括:
任务组合模块,用于获取每个任务的执行时间,并根据执行时间对所述多任务进行拆分合并以得到任务组合;
时间记录模块,用于根据所述任务组合并行执行所述多任务,并记录所述多任务的执行时间;
模式确定模块,用于若所述多任务的执行时间小于之前的任务组合的执行时间,则将所述任务组合作为所述多任务的执行模式,并按照所述执行模式并行执行所述多任务。
9.一种多任务并行执行的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202010048351.5A 2020-01-16 2020-01-16 多任务并行执行的方法和装置 Active CN113127057B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010048351.5A CN113127057B (zh) 2020-01-16 2020-01-16 多任务并行执行的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010048351.5A CN113127057B (zh) 2020-01-16 2020-01-16 多任务并行执行的方法和装置

Publications (2)

Publication Number Publication Date
CN113127057A true CN113127057A (zh) 2021-07-16
CN113127057B CN113127057B (zh) 2024-07-16

Family

ID=76771947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010048351.5A Active CN113127057B (zh) 2020-01-16 2020-01-16 多任务并行执行的方法和装置

Country Status (1)

Country Link
CN (1) CN113127057B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112379998A (zh) * 2020-10-20 2021-02-19 广东工业大学 一种基于任务融合和任务调度的切换时延优化方法
CN113961328A (zh) * 2021-10-26 2022-01-21 深圳大学 一种任务处理方法、装置、存储介质及电子设备
CN115756788A (zh) * 2022-11-18 2023-03-07 北京华如科技股份有限公司 一种多任务并行执行关系设置方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984594A (zh) * 2014-05-14 2014-08-13 上海上讯信息技术股份有限公司 一种基于分布式可配置加权算法的任务调度方法及***
US20160170811A1 (en) * 2014-12-16 2016-06-16 Microsoft Technology Licensing, Llc Job scheduling and monitoring
CN106685853A (zh) * 2016-11-23 2017-05-17 泰康保险集团股份有限公司 处理数据的方法及装置
US20180307528A1 (en) * 2017-04-19 2018-10-25 International Business Machines Corporation Leveraging directed acyclic graph (dag) information to group tasks for execution
CN110084507A (zh) * 2019-04-24 2019-08-02 信雅达***工程股份有限公司 云计算环境下分级感知的科学工作流调度优化方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984594A (zh) * 2014-05-14 2014-08-13 上海上讯信息技术股份有限公司 一种基于分布式可配置加权算法的任务调度方法及***
US20160170811A1 (en) * 2014-12-16 2016-06-16 Microsoft Technology Licensing, Llc Job scheduling and monitoring
CN106685853A (zh) * 2016-11-23 2017-05-17 泰康保险集团股份有限公司 处理数据的方法及装置
US20180307528A1 (en) * 2017-04-19 2018-10-25 International Business Machines Corporation Leveraging directed acyclic graph (dag) information to group tasks for execution
CN110084507A (zh) * 2019-04-24 2019-08-02 信雅达***工程股份有限公司 云计算环境下分级感知的科学工作流调度优化方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112379998A (zh) * 2020-10-20 2021-02-19 广东工业大学 一种基于任务融合和任务调度的切换时延优化方法
CN113961328A (zh) * 2021-10-26 2022-01-21 深圳大学 一种任务处理方法、装置、存储介质及电子设备
CN115756788A (zh) * 2022-11-18 2023-03-07 北京华如科技股份有限公司 一种多任务并行执行关系设置方法及装置

Also Published As

Publication number Publication date
CN113127057B (zh) 2024-07-16

Similar Documents

Publication Publication Date Title
CN107729139B (zh) 一种并发获取资源的方法和装置
CN110262807B (zh) 集群创建进度日志采集***、方法和装置
CN113127057B (zh) 多任务并行执行的方法和装置
CN109245908B (zh) 一种主从集群切换的方法和装置
CN109873863B (zh) 服务的异步调用方法和装置
CN112783874A (zh) 一种数据分析方法、装置和***
CN113076251A (zh) 测试方法和装置
CN115525411A (zh) 处理业务请求的方法、装置、电子设备和计算机可读介质
CN116627333A (zh) 日志缓存方法、装置、电子设备及计算机可读存储介质
CN111831503B (zh) 一种基于监控代理的监控方法和监控代理装置
CN111858040A (zh) 一种资源调度方法和装置
CN112398669A (zh) 一种Hadoop部署方法和装置
CN113127225A (zh) 一种数据处理任务的调度方法、装置和***
CN112445860A (zh) 一种处理分布式事务的方法和装置
CN113672671A (zh) 一种实现数据加工的方法和装置
CN113535371A (zh) 一种多线程异步加载资源的方法和装置
CN111767126A (zh) 分布式批量处理的***和方法
US20230093004A1 (en) System and method for asynchronous backend processing of expensive command line interface commands
CN113378346A (zh) 模型仿真的方法和装置
CN116521639A (zh) 一种日志数据的处理方法、电子设备和计算机可读介质
CN112667368A (zh) 一种任务数据处理方法和装置
CN114816477A (zh) 服务器升级方法、装置、设备、介质和程序产品
CN112860447B (zh) 一种不同应用间的交互方法和***
CN112688982B (zh) 一种用户请求处理方法和装置
CN114064803A (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