运算结果的确定方法和装置、存储介质及电子装置制造方法及图纸

技术编号:33464165 阅读:21 留言:0更新日期:2022-05-19 00:43
本发明专利技术公开了一种运算结果的确定方法和装置、存储介质及电子装置,其中,上述方法包括:通过预设方式将待处理的数据集划分为多个子数据集;在进程池中将多个子数据集分配给对应的多个子进程,其中,多个子进程用于处理多个子数据集;在多个子进程中的任一子进程处理完成任一子进程对应的子数据集的情况下,将任一子进程对应的子数据集的运算结果保存至目标存储区域;在多个子数据集均被处理完成的情况下,根据目标存储区域中保存的多个子数据集分别对应的多个运算结果确定数据集对应的目标结果,采用上述技术方案,解决了通过回调函数无法对子进程的不可序列化的运算结果进行处理,进而导致无法得到待处理的数据集的运算结果。结果。结果。

【技术实现步骤摘要】
运算结果的确定方法和装置、存储介质及电子装置


[0001]本专利技术涉及通信领域,具体而言,涉及一种运算结果的确定方法和装置、存储介质及电子装置。

技术介绍

[0002]在用Python语言构建机器学习模型时,所需处理的样本数据规模基本在千万级上下,多则可能达到亿级以上。若采用单进程处理这些数据,其耗费的时间成本一般是难以承受的,因此需要借助多进程并行处理来缩短所需时间。从硬件上看,目前主流服务器的CPU内核数量至少32个,组建服务器集群后运算资源更为充足,完全能够满足并行运算的需求。而软件方面,依赖Python缺省库中的multiprocessing包便可编写多进程数据处理代码,解决单进程运算耗时过长的问题。multiprocessing包通过使用子进程而非线程有效地绕过了全局解释器锁,因此该程序包允许程序员充分利用给定机器上的多个处理器。同时,该包内含的Pool对象赋予函数并行化处理一系列输入值的能力,可以将输入数据分配给不同进程处理,有效的提高了编程效率。
[0003]相关技术中,多进程并行处理pandas.DataFrame(相当于上述实施例中的待处理数据集)时,每个子进程的处理结果都是独立的,因此需要在所有子进程运算完成后对结果数据进行汇总整合。目前的常见方法是编写一个回调函数用于数据整合,并将该函数传给子进程创建方法的callback参数。但是在子进程的运算结果不可序列化(Serialization)的情况下,赋给callback的回调函数无法对其进行处理。这就导致在一些运算逻辑较为复杂的场景下,若数据处理函数包含了无法被序列化的内容,程序就会出现只并行运算而不返回结果的情况,整个程序变得徒劳无功。为了满足可序列化的要求,开发者必须耗费精力去修改数据处理函数,而该过程往往耗时耗力,徒增整个数据处理过程的时间成本。
[0004]针对相关技术中,通过回调函数无法对子进程的不可序列化的运算结果进行处理,进而导致无法得到待处理的数据集的运算结果,尚未提出有效的解决方案。

技术实现思路

[0005]本专利技术实施例提供了一种运算结果的确定方法和装置、存储介质及电子装置,以至少解决相关技术中,通过回调函数无法对子进程的不可序列化的运算结果进行处理,进而导致无法得到待处理的数据集的运算结果。
[0006]根据本专利技术实施例的一个实施例,提供了一种运算结果的确定方法,包括:通过预设方式将待处理的数据集划分为多个子数据集;在进程池中将所述多个子数据集分配给对应的多个子进程,其中,所述多个子进程用于处理所述多个子数据集;在所述多个子进程中的任一子进程处理完成所述任一子进程对应的子数据集的情况下,将所述任一子进程对应的子数据集的运算结果保存至目标存储区域;在所述多个子数据集均被处理完成的情况下,根据所述目标存储区域中保存的所述多个子数据集分别对应的多个运算结果确定所述数据集对应的目标结果。
[0007]在一个示例性实施例中,将所述任一子进程对应的子数据集的运算结果保存至目标存储区域,包括:在进程池对象在所述进程池中创建所述多个子进程的情况下,确定所述任一子数据集对应的目标子进程,其中,所述目标子进程中至少包括:数据运算程序和数据存储程序;通过所述数据运算程序对所述任一子数据集进行运算,以得到所述任一子数据集对应的运算结果;通过所述数据存储程序将所述任一子数据集对应的运算结果保存至所述目标存储区域。
[0008]在一个示例性实施例中,在进程池中将所述多个子数据集分配给对应的多个子进程,包括:确定所述进程池中的多个子进程的进程数量和所述多个子数据集中的数据集数量;确定所述进程数量和所述数据集数量的大小关系,并根据所述大小关系在进程池中将所述多个子数据集分配给对应的多个子进程。
[0009]在一个示例性实施例中,根据所述大小关系在进程池中将所述多个子数据集分配给对应的多个子进程,包括:在所述大小关系指示所述进程数量大于所述数据集数量的情况下,在所述多个子进程中确定与所述数据集数量一致的多个目标子进程,将所述多个子数据集分别分配给对应的子进程;在所述大小关系指示所述进程数量小于所述数据集数量的情况下,按照预设方式将所述多个子数据集中的第一子数据集分配给所述多个子进程;在所述多个子进程中的第一子进程处理完成对应的第一子数据集的情况下,将所述子数据集中的第二子数据集分配给所述第一子进程,直至将所述多个子数据集均分配给对应的子进程;在所述大小关系指示所述进程数量等于所述数据集数量的情况下,将所述多个子数据集一一分配给对应的多个子进程。
[0010]在一个示例性实施例中,根据所述目标存储区域中保存的所述多个子数据集分别对应的多个运算结果确定所述数据集对应的目标结果,包括:遍历所述目标存储区域,以获取所述目标存储区域中目标文件格式的多个目标文件,其中,所述多个目标文件中分别用于存储所述多个运算结果;在所述多个目标文件中获取所述多个运算结果,并将所述目标存储区域中的所述多个运算结果进行拼接,以确定所述数据集对应的目标结果。
[0011]在一个示例性实施例中,将所述目标存储区域中的多个运算结果进行拼接,以确定所述数据集对应的目标结果,包括:按预设顺序对所述多个运算结果进行排序,以得到排序后的运算结果;按顺序将排序后的运算结果中的第N个运算结果的尾部与排序后的运算结果中的第N+1个运算结果的首部进行拼接,得到拼接后的运算结果,其中,N为大于等于1的整数;根据所述拼接后的运算结果确定所述数据集对应的目标结果。
[0012]在一个示例性实施例中,将所述任一子进程对应的子数据集的运算结果保存至目标存储区域,包括:在所述多个子进程中的任一子进程处理完成所述多个子数据集中的任一子数据集的情况下,获取所述任一子数据集的运算结果;将所述运算结果以字符串格式保存至第一文件,并将所述第一文件保存至所述目标存储区域,其中,多个目标文件中至少包括:第一文件,所述第一文件的文件名称为所述任一子数据集的对应散列值。
[0013]根据本专利技术实施例的另一个实施例,还提供了一种运算结果的确定装置,包括:划分模块,用于通过预设方式将待处理的数据集划分为多个子数据集;分配模块,用于在进程池中将所述多个子数据集分配给对应的多个子进程,其中,所述多个子进程用于处理所述多个子数据集;保存模块,用于在所述多个子进程中的任一子进程处理完成所述任一子进程对应的子数据集的情况下,将所述任一子进程对应的子数据集的运算结果保存至目标存
储区域;确定模块,用于在所述多个子数据集均被处理完成的情况下,根据所述目标存储区域中保存的所述多个子数据集分别对应的多个运算结果确定所述数据集对应的目标结果。
[0014]根据本专利技术实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述运算结果的确定方法。
[0015]根据本专利技术实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种运算结果的确定方法,其特征在于,包括:通过预设方式将待处理的数据集划分为多个子数据集;在进程池中将所述多个子数据集分配给对应的多个子进程,其中,所述多个子进程用于处理所述多个子数据集;在所述多个子进程中的任一子进程处理完成所述任一子进程对应的子数据集的情况下,将所述任一子进程对应的子数据集的运算结果保存至目标存储区域;在所述多个子数据集均被处理完成的情况下,根据所述目标存储区域中保存的所述多个子数据集分别对应的多个运算结果确定所述数据集对应的目标结果。2.根据权利要求1所述的运算结果的确定方法,其特征在于,将所述任一子进程对应的子数据集的运算结果保存至目标存储区域,包括:在进程池对象在所述进程池中创建所述多个子进程的情况下,确定所述任一子数据集对应的目标子进程,其中,所述目标子进程中至少包括:数据运算程序和数据存储程序;通过所述数据运算程序对所述任一子数据集进行运算,以得到所述任一子数据集对应的运算结果;通过所述数据存储程序将所述任一子数据集对应的运算结果保存至所述目标存储区域。3.根据权利要求1所述的运算结果的确定方法,其特征在于,在进程池中将所述多个子数据集分配给对应的多个子进程,包括:确定所述进程池中的多个子进程的进程数量和所述多个子数据集中的数据集数量;确定所述进程数量和所述数据集数量的大小关系,并根据所述大小关系在进程池中将所述多个子数据集分配给对应的多个子进程。4.根据权利要求3所述的运算结果的确定方法,其特征在于,根据所述大小关系在进程池中将所述多个子数据集分配给对应的多个子进程,包括:在所述大小关系指示所述进程数量大于所述数据集数量的情况下,在所述多个子进程中确定与所述数据集数量一致的多个目标子进程,将所述多个子数据集分别分配给对应的子进程;在所述大小关系指示所述进程数量小于所述数据集数量的情况下,按照预设方式将所述多个子数据集中的第一子数据集分配给所述多个子进程;在所述多个子进程中的第一子进程处理完成对应的第一子数据集的情况下,将所述子数据集中的第二子数据集分配给所述第一子进程,直至将所述多个子数据集均分配给对应的子进程;在所述大小关系指示所述进程数量等于所述数据集数量的情况下,将所述多个子数据集一一分配给对应的多个子进程。5.根据权利要求1所述的运算结果的确定方法,其特征在于,根据所述目标存储区域中保存的所述多个子数据...

【专利技术属性】
技术研发人员:杜心达
申请(专利权)人:兴业消费金融股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1