一种时间序列处理的计算流图构建方法和装置转让专利

申请号 : CN201811382844.1

文献号 : CN109508412B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李家军江树浩龚施俊鄢贵海

申请人 : 中科驭数(北京)科技有限公司

摘要 :

本申请提供了一种时间序列处理的计算流图构建方法和装置,其中,该方法包括:获取待处理的时间序列处理算法;将所述待处理的时间序列处理算法拆分为多个计算表达式;为所述多个计算表达式分别构造计算流图,以得到多个计算流图;将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型。利用本申请实施例提供的技术方案,可以直观地展现时间序列算法的数据依赖关系,利用这种依赖关系可以优化对时间序列处理算法中的计算步骤,可以避免因数据依赖导致的处理器阻塞的问题,且可以方便地对计算流图根据计算系统的特性进行划分以匹配计算系统的计算能力,从而提高计算系统的资源利用率和时间序列处理算法的运行效率。

权利要求 :

1.一种时间序列处理的计算流图构建方法,其特征在于,所述方法包括:获取待处理的时间序列处理算法;

将所述待处理的时间序列处理算法拆分为多个计算表达式;

为所述多个计算表达式分别构造计算流图,以得到多个计算流图;

将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型;

其中:

为所述多个计算表达式分别构造计算流图,以得到多个计算流图,包括:将所述多个计算表达式放入表达式池中;

从所述表达式池中采用无放回方式随机取出一个计算表达式,以构造相应的计算流图;

将所述多个计算流图进行合并,包括:

将为从所述表达式池中取出的第一个计算表达式所构造的计算流图作为初始计算流图;

重复以下步骤直至所述表达式池中的所有计算表达池为空:将为从所述表达式池中取出的下一个计算表达式所构造的计算流图作为中间计算流图;

将所述中间计算流图合并至所述初始计算流图中;

将合并后所得到的计算流图,作为初始计算流图。

2.根据权利要求1所述的方法,其特征在于,将所述待处理的时间序列处理算法拆分为多个计算表达式,包括:对所述待处理的时间序列处理算法进行拆分,得到输入数据、中间数据和输出数据;

对所述输入数据、中间数据和输出数据进行数据依赖分析,得到所述计算表达式。

3.根据权利要求1所述的方法,其特征在于,为所述多个计算表达式分别构造计算流图,包括:将当前的计算表达式的输入时间序列作为输入节点;

将当前的计算表达式的输出时间序列作为输出节点;

将输入节点到输出节点的连线作为有向边,其中,所述有向边用于表征当前的计算表达式对应的时间序列处理函数;

以所述输入节点、所述输出节点和所述有向边,作为当前计算表达式的计算流图。

4.根据权利要求1所述的方法,其特征在于,将所述中间计算流图合并至所述初始计算流图中,包括:确定所述中间计算流图与所述初始计算流图之间是否存在相同的节点;

在存在相同的节点的情况下,删除中间计算流图中该相同的节点;

将删除了该相同的节点后的中间计算流图,合并至所述初始计算流图中。

5.一种时间序列处理的计算流图构建装置,其特征在于,包括:获取模块,用于获取待处理的时间序列处理算法;

拆分模块,用于将所述待处理的时间序列处理算法拆分为多个计算表达式;

构建模块,用于为所述多个计算表达式分别构造计算流图,以得到多个计算流图;

合并模块,用于将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型;

其中:

所述构建模块包括:

第一生成单元,用于将当前的计算表达式的输入时间序列作为输入节点;

第二生成单元,用于将当前的计算表达式的输出时间序列作为输出节点;

第三生成单元,用于将输入节点到输出节点的连线作为有向边,其中,所述有向边用于表征当前的计算表达式对应的时间序列处理函数;

第四生成单元,用于以所述输入节点、所述输出节点和所述有向边,作为当前计算表达式的计算流图;

所述合并模块,具体用于将为从所述表达式池中取出的第一个计算表达式所构造的计算流图作为初始计算流图;重复以下步骤直至所述表达式池中的所有计算表达池为空:将为从所述表达式池中取出的下一个计算表达式所构造的计算流图作为中间计算流图;将所述中间计算流图合并至所述初始计算流图中;将合并后所得到的计算流图,作为初始计算流图。

6.一种终端设备中,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至4中任一项所述方法的步骤。

7.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现权利要求1至4中任一项所述方法的步骤。

说明书 :

一种时间序列处理的计算流图构建方法和装置

技术领域

[0001] 本申请属于数据处理技术领域,尤其涉及一种时间序列处理的计算流图构建方法和装置。

背景技术

[0002] 时间序列分析在很多的分析场景都是很重要的技术,在许多应用场景中,一般都需要能够快速地响应基于快速持续到达的数据流。以股票市场应用为例,有多个客户端在监听股票市场的价格波动,需要这个系统能够有效地去响应针对不同客户端的分析请求。不同客户端的分析请求是不同的,例如,有些客户端请求的是每周股价波动率,有些客户端请求的是每月平均股价等。除了在金融领域,时间序列分析在医疗健康、商业决策、科学计算、社交媒体和网络控制等领域,也是广泛需求的。
[0003] 一般,时间序列处理的数据量规模很大,时间序列数据之间存在依赖关系,这种依赖关系是由时间序列处理函数确定的。然而,时间序列处理函数的种类比较多,这也就导致时间序列数据之间的关联关系非常复杂。
[0004] 针对上述问题,目前尚未提出有效的解决方案。

发明内容

[0005] 本申请目的在于提供一种时间序列处理的计算流图构建方法和装置,可以实现清楚表征时间序列数据之间的关联性的问题,且可以实现对数据处理过程优化。
[0006] 本申请提供一种时间序列处理的计算流图构建方法和装置是这样实现的:
[0007] 一种时间序列处理的计算流图构建方法,所述方法包括:
[0008] 获取待处理的时间序列处理算法;
[0009] 将所述待处理的时间序列处理算法拆分为多个计算表达式;
[0010] 为所述多个计算表达式分别构造计算流图,以得到多个计算流图;
[0011] 将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型。
[0012] 在一个实施方式中,将所述待处理的时间序列处理算法拆分为多个计算表达式,包括:
[0013] 对所述待处理的时间序列处理算法进行拆分,得到输入数据、中间数据和输出数据;
[0014] 对所述输入数据、中间数据和输出数据进行数据依赖分析,得到所述计算表达式。
[0015] 在一个实施方式中,为所述多个计算表达式分别构造计算流图,包括:
[0016] 将当前的计算表达式的输入时间序列作为输入节点;
[0017] 将当前的计算表达式的输出时间序列作为输出节点;
[0018] 将输入节点到输出节点的连线作为有向边,其中,所述有向边用于表征当前的计算表达式对应的时间序列处理函数;
[0019] 以所述输入节点、所述输出节点和所述有向边,作为当前计算表达式的计算流图。
[0020] 在一个实施方式中,为所述多个计算表达式分别构造计算流图,以得到多个计算流图,包括:
[0021] 将所述多个计算表达式放入表达式池中;
[0022] 从所述表达式池中采用无放回方式随机取出一个计算表达式;
[0023] 在一个实施方式中,将所述多个计算流图进行合并,包括:
[0024] 将为从所述表达式池中取出的第一个计算表达式所构造的计算流图作为初始计算流图;
[0025] 重复以下步骤直至所述表达式池中的所有计算表达池为空:
[0026] 将为从所述表达式池中取出的下一个计算表达式所构造的计算流图作为中间计算流图;
[0027] 将所述中间计算流图合并至所述初始计算流图中;
[0028] 将合并后所得到的计算流图,作为初始计算流图。
[0029] 在一个实施方式中,将所述中间计算流图合并至所述初始计算流图中,包括:
[0030] 确定所述中间计算流图与所述初始计算流图之间是否存在相同的节点;
[0031] 在存在相同的节点的情况下,删除中间计算流图中该相同的节点;
[0032] 将删除了该相同的节点后的中间计算流图,合并至所述初始计算流图中。
[0033] 一种时间序列处理的计算流图构建装置,包括:
[0034] 获取模块,用于获取待处理的时间序列处理算法;
[0035] 拆分模块,用于将所述待处理的时间序列处理算法拆分为多个计算表达式;
[0036] 构建模块,用于为所述多个计算表达式分别构造计算流图,以得到多个计算流图;
[0037] 合并模块,用于将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型。
[0038] 在一个实施方式中,所述构建模块包括:
[0039] 第一生成单元,用于将当前的计算表达式的输入时间序列作为输入节点;
[0040] 第二生成单元,用于将当前的计算表达式的输出时间序列作为输出节点;
[0041] 第三生成单元,用于将输入节点到输出节点的连线作为有向边,其中,所述有向边用于表征当前的计算表达式对应的时间序列处理函数;
[0042] 第四生成单元,用于以所述输入节点、所述输出节点和所述有向边,作为当前计算表达式的计算流图。
[0043] 一种终端设备中,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现如下步骤:
[0044] 获取待处理的时间序列处理算法;
[0045] 将所述待处理的时间序列处理算法拆分为多个计算表达式;
[0046] 为所述多个计算表达式分别构造计算流图,以得到多个计算流图;
[0047] 将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型。
[0048] 一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现如下步骤:
[0049] 获取待处理的时间序列处理算法;
[0050] 将所述待处理的时间序列处理算法拆分为多个计算表达式;
[0051] 为所述多个计算表达式分别构造计算流图,以得到多个计算流图;
[0052] 将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型。
[0053] 本申请提供的时间序列处理的计算流图方法,将待处理的时间序列处理算法拆分为多个计算表达式,并为多个计算表达式分别构造计算流图,以得到多个计算流图,将多个计算流图进行合并,从而可以得到待处理的时间序列处理算法对应的流图模型。通过上述方式可以直观地展现时间序列算法的数据依赖关系,利用这种依赖关系可以优化对时间序列处理算法中的计算步骤,可以避免因数据依赖导致的处理器阻塞的问题,且可以方便地对计算流图根据计算系统的特性进行划分以匹配计算系统的计算能力,从而提高计算系统的资源利用率和时间序列处理算法的运行效率。

附图说明

[0054] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0055] 图1是根据本发明实施例的时间序列处理的计算流图构建方法的方法流程图;
[0056] 图2是根据本发明实施例的处理表达式示意图;
[0057] 图3是根据本发明实施例的计算流图示意图;
[0058] 图4是根据本发明实施例的时间序列处理算法的计算流图建模流程图;
[0059] 图5是根据本发明实施例的将时间序列处理算法转化为计算流图的实施例;
[0060] 图6是根据本发明实施例的子计算流图与原始计算流图合并流程示例;
[0061] 图7是根据本发明实施例的时间序列处理的计算流图构建装置的结构框图。

具体实施方式

[0062] 为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0063] 图1是本申请时间序列处理的计算流图构建方法一个实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
[0064] 具体的如图1所示,该时间序列处理的计算流图构建方法可以包括如下步骤:
[0065] 步骤101:获取待处理的时间序列处理算法;
[0066] 具体的,可以是获取待处理的时间序列处理算法的伪代码,基于该伪代码得到的就是待处理的时间序列处理算法。
[0067] 步骤102:将所述待处理的时间序列处理算法拆分为多个计算表达式;
[0068] 具体的将所述待处理的时间序列处理算法拆分为多个计算表达式,可以是:对所述待处理的时间序列处理算法进行拆分,得到输入数据、中间数据和输出数据;对所述输入数据、中间数据和输出数据进行数据依赖分析,得到所述计算表达式。
[0069] 例如,在获取到时间序列处理算法之后,可以将其进行拆分,得到多个计算表达式,例如,可以拆分得到如图2所示的多个计算表达式:A、B、C、D、E。每个计算表达式可以是一步计算,即,将原本的待处理的时间序列处理算法拆分成多个仅有一步计算的计算表达式。
[0070] 步骤103:为所述多个计算表达式分别构造计算流图,以得到多个计算流图;
[0071] 在实现的时候,可以为每个计算表达式都构造一个计算流图,如图3所示,在图3中是以为上述的计算表达式A和计算表达式C分别构造的计算流图。对于其他的计算表达式,都可以按照这种方式构造计算流图。
[0072] 具体的,为多个计算表达式分别构造计算流图,可以包括:
[0073] S1:将当前的计算表达式的输入时间序列作为输入节点;
[0074] S2:将当前的计算表达式的输出时间序列作为输出节点;
[0075] S3:将输入节点到输出节点的连线作为有向边,其中,所述有向边用于表征当前的计算表达式对应的时间序列处理函数;
[0076] S4:以所述输入节点、所述输出节点和所述有向边,作为当前计算表达式的计算流图。
[0077] 步骤104:将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型。
[0078] 在具体实现的时候,可以建立一个表达式池,将所有的表达式都放入这个表达式池中,然后一个个无回放的方式取出,从而使得每个表达式都会被转换到,且不会出现重复操作。即,为所述多个计算表达式分别构造计算流图,以得到多个计算流图,可以包括:将所述多个计算表达式放入表达式池中;从所述表达式池中采用无放回方式随机取出一个计算表达式;
[0079] 在进行多个计算流图合并的时候,可以是将为从所述表达式池中取出的第一个计算表达式所构造的计算流图作为初始计算流图;重复以下步骤直至所述表达式池中的所有计算表达池为空:将为从所述表达式池中取出的下一个计算表达式所构造的计算流图作为中间计算流图;将所述中间计算流图合并至所述初始计算流图中;将合并后所得到的计算流图,作为初始计算流图。
[0080] 即,随机取出一个计算表达式,就以这个计算表达式的计算流图作为初始的计算流图,每次的合并操作,都是向这个计算流图中合并下面的计算流图为标准。在一个实施方式中,将所述中间计算流图合并至所述初始计算流图中,可以包括:确定所述中间计算流图与所述初始计算流图之间是否存在相同的节点;在存在相同的节点的情况下,删除中间计算流图中该相同的节点;将删除了该相同的节点后的中间计算流图,合并至所述初始计算流图中。
[0081] 下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
[0082] 针对现有的时间序列数据之间存在依赖关系而导致的数据之间关系特别复杂的问题,在本例中,考虑到可以基于计算流图对时间序列处理算法进行建模,从而清楚地表达时间序列数据之间的关联关系,从而为时间序列算法的运算优化提供便利。
[0083] 在具体实现的时候,可以是先将所有的计算表达式都各自转换为计算流图,再集中进行合并;也可以是将计算表达式一个一个取出,每取出一个就转换为计算表达式,然后与已经取出的计算表达式所形成计算流图进行合并。
[0084] 具体的,在本例中还提供了一种对时间序列处理算法进行基于计算流图的建模方法,从而使得时间序列处理变得可视化,且可以进行编译的优化,可以如图4所示,包括如下步骤:
[0085] 步骤S1:将时间序列处理算法拆分成多条时间序列计算表达式,将多条时间序列计算表达式组成时间序列计算表达式池;
[0086] 步骤S2:从上述时间序列计算表达式池中以无放回方式取出一条表达式,将取出的表达式转化成计算流图,将该计算流图作为创始计算流图;
[0087] 步骤S3:依次从上述时间序列计算表达式池中以无放回方式取出一条表达式,将取出的表达式转化成计算流图,将计算流图作为子计算流图。
[0088] 如果子计算流图与创始计算流图之间有相同的节点,那么以该节点为连接点,将子计算流图合并到创始计算流图中,以更新创始计算流图;
[0089] 步骤S4:如果时间序列计算表达式池中还有剩余时间序列计算表达式,则重复步骤S3,否则执行步骤S5;
[0090] 步骤S5:输出更新后形成的最终的创始计算流图输出,将最终的创始计算流图作为时间序列处理算法的计算流图模型。
[0091] 在上例中,对时间序列处理算法拆分成多条时间序列计算表达式的时候,可以是:获取时间序列处理算法中的输入数据、中间数据及输出数据,对上述数据进行数据依赖的分析,从而可将复杂的时间序列处理算法拆分成多个时间序列计算表达式。
[0092] 具体的,上述的计算流图可以是节点和有向边构成的,其中,每个节点代表一个时间序列条目,每条有向边代表一个时间序列处理函数,其中,有向边从输入时间序列节点指向输出时间序列节点,即,该有向边代表的函数作用于输入时间序列,函数返回结果为输出时间序列,将上述有向边记作上述输入节点的输出边和上述输出节点的输入边。
[0093] 在实现的过程中,将时间序列处理表达式转化成计算流图的方法,可以包括:
[0094] S1:取表达式的最外层时间序列处理函数,及该时间序列处理函数的输入时间序列数据。
[0095] S2:创建计算流图的根节点,用根节点表示表达式的输出时间序列数据,创建父节点,用父节点表示时间序列处理函数的输入时间序列数据。创建边,由父节点指向根节点,通过该边表示时间序列处理函数。
[0096] S3:判断S2中的父节点是否为表达式形式的输入时间序列数据,如果是,则将该表达式转化成计算流图,用该计算流图的根节点替换该父节点;如果不是,则将S2中的计算流图输出,即为该表达式转化成的计算流图。
[0097] 举例而言,如果将子计算流图的节点合并到创始计算流图中,可以将子计算流图的节点记为A,创始计算流图中与之相同的节点记为B,在子计算流图中删去A节点,并将A节点的输入边添加为B的输入边,将A节点的输出边添加为B的输出边。
[0098] 如果用子计算流图更新创始计算流图,可以将子计算流图的节点都添加到创始计算流图中,将对应的边都添加到创始计算流图中。
[0099] 在上例中,提供了一种基于计算流图的时间序列处理算法的建模方法,可以用于时间序列处理算法的可视化和编译优化中,以优化时间序列处理算法的运行效率。通过该建模方法,可以直观地展现时间序列算法的数据依赖关系,利用这种依赖关系可以优化对时间序列处理算法中的计算步骤,避免因数据依赖导致的处理器阻塞。通过上述建模方法,还可以方便地对计算流图根据计算系统的特性进行划分以匹配计算系统的计算能力,从而提高计算系统的资源利用率和时间序列处理算法的运行效率。
[0100] 下面以一个具体实例为例进行说明:
[0101] 以时间序列处理算法的伪代码为图5所示为例,可以包括如下步骤:
[0102] 步骤a:将时间序列处理算法拆分成如图2所示的,5条时间序列处理表达式,分别对应计算时间序列数据A、B、C、D、E的代码行,以构成时间序列处理表达式池。
[0103] 步骤b:从时间序列处理表达式池中取出表达式A=ts_sum(OPEN,5),构造创始计算流图,得到如图5中s1所示的计算流图。
[0104] 步骤c:从时间序列处理表达式池中取出表达式B=ts_max(HIGH,5),构造子计算流图,并与创始计算流图合并,得到如图5中s2所示的新的创始计算流图。
[0105] 步骤d:从时间序列处理表达式池中取出表达式C=OPEN-HIGH,构造子计算流图,并与与创始计算流图合并,得到如图5中s3所示的新的创始计算流图。
[0106] 步骤e:从时间序列处理表达式池中取出表达式D=ts_sum(A,5),构造子计算流图,并与创始计算流图合并,得到如图5中s4所示的新的创始计算流图。
[0107] 步骤f:从时间序列处理表达式池中取出表达式E=A-HIGH,构造子计算流图,并与创始计算流图合并,得到如图5中s5所示的新的创始计算流图。
[0108] 步骤g:时间序列处理表达式池为空,将创始计算流图输出,即为该时间序列处理算法的计算流图模型。
[0109] 在本例中,还提供了一种具体的合并示例,如图6所示,包括:
[0110] 步骤0:初始化;
[0111] 得到如图6中的两个计算流图,前一个作为原始计算流图,后一个作为待合并的子计算流图;
[0112] 步骤1:子计算流图5中节点9与原始计算流图中节点3相同,因此,删除节点9及其父节点,将节点9的输出边添加至节点3上。
[0113] 步骤3:子计算流图中节点8与原始计算流图中节点2相同,因此,删除节点8,并将节点8的输出边添加至节点2上。
[0114] 在上例中,对时间序列处理算法的拆分可以是获取时间序列处理算法中的输入数据、中间数据及输出数据,对上述数据进行数据依赖的分析,从而可将复杂的时间序列处理算法拆分成多个时间序列计算表达式。
[0115] 本发明所述的计算流图,由节点和有向边构成,每个节点代表一个时间序列条目,每条有向边代表一个时间序列处理函数,有向边从输入时间序列节点指向输出时间序列节点,即,该有向边代表的函数作用于输入时间序列,函数返回结果为输出时间序列,将上述有向边记作上述输入节点的输出边和输出节点的输入边。
[0116] 基于同一发明构思,本发明实施例中还提供了一种时间序列处理的计算流图构建装置,如下面的实施例所述。由于时间序列处理的计算流图构建装置解决问题的原理与时间序列处理的计算流图构建方法相似,因此时间序列处理的计算流图构建装置的实施可以参见时间序列处理的计算流图构建方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图7是本发明实施例的时间序列处理的计算流图构建装置的一种结构框图,如图7所示,可以包括:获取模块701、拆分模块702、构造模块703和合并模块704,下面对该结构进行说明。
[0117] 获取模块701,用于获取待处理的时间序列处理算法;
[0118] 拆分模块702,用于将所述待处理的时间序列处理算法拆分为多个计算表达式;
[0119] 构造模块703,用于为所述多个计算表达式分别构造计算流图,以得到多个计算流图;
[0120] 合并模块704,用于将所述多个计算流图进行合并,得到所述待处理的时间序列处理算法对应的流图模型。
[0121] 在一个实施方式中,拆分模块702具体可以对所述待处理的时间序列处理算法进行拆分,得到输入数据、中间数据和输出数据;对所述输入数据、中间数据和输出数据进行数据依赖分析,得到所述计算表达式。
[0122] 在一个实施方式中,构造模块703具体可以将当前的计算表达式的输入时间序列作为输入节点;将当前的计算表达式的输出时间序列作为输出节点;将输入节点到输出节点的连线作为有向边,其中,所述有向边用于表征当前的计算表达式对应的时间序列处理函数;以所述输入节点、所述输出节点和所述有向边,作为当前计算表达式的计算流图。
[0123] 在一个实施方式中,构造模块703具体可以将所述多个计算表达式放入表达式池中;从所述表达式池中采用无放回方式随机取出一个计算表达式;
[0124] 在一个实施方式中,将所述多个计算流图进行合并,可以包括:将为从所述表达式池中取出的第一个计算表达式所构造的计算流图作为初始计算流图;重复以下步骤直至所述表达式池中的所有计算表达池为空:将为从所述表达式池中取出的下一个计算表达式所构造的计算流图作为中间计算流图;将所述中间计算流图合并至所述初始计算流图中;将合并后所得到的计算流图,作为初始计算流图。
[0125] 在一个实施方式中,合并模块704具体可以确定所述中间计算流图与所述初始计算流图之间是否存在相同的节点;在存在相同的节点的情况下,删除中间计算流图中该相同的节点;将删除了该相同的节点后的中间计算流图,合并至所述初始计算流图中。
[0126] 在上例中,将待处理的时间序列处理算法拆分为多个计算表达式,并为多个计算表达式分别构造计算流图,以得到多个计算流图,将多个计算流图进行合并,从而可以得到待处理的时间序列处理算法对应的流图模型。通过上述方式可以直观地展现时间序列算法的数据依赖关系,利用这种依赖关系可以优化对时间序列处理算法中的计算步骤,可以避免因数据依赖导致的处理器阻塞的问题,且可以方便地对计算流图根据计算系统的特性进行划分以匹配计算系统的计算能力,从而提高计算系统的资源利用率和时间序列处理算法的运行效率。
[0127] 虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
[0128] 上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
[0129] 本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0130] 本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0131] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
[0132] 本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0133] 虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。