一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

大批量文件处理方法、装置、设备及存储介质与流程

2022-05-11 13:17:12 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种大批量文件处理方法、装置、设备及存储介质。


背景技术:

2.目前大部分进行文件处理的实现方式都以单线程为主,在文件数量较小的前提下能满足处理需求,但在面对大批量文件都需要进行处理的场景下,单线程的方案会持续占据计算机资源,且未将计算机的性能完全发挥,所需处理文件的时间也很长。
3.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。


技术实现要素:

4.本发明的主要目的在于提供一种大批量文件处理方法、装置、设备及存储介质,旨在解决现有单线程处理文件的方式在面对大批量文件时持续占用计算机资源,处理时间太长的技术问题。
5.为实现上述目的,本发明提供了一种大批量文件处理方法,所述方法包括以下步骤:
6.根据若干待处理文件创建文件索引;
7.获取预设协程数量n;
8.根据所述预设协程数量n对所述文件索引进行分片,得到n个文件索引分片;
9.以所述预设协程数量n为循环次数启动协程;
10.在目标循环过程中获取对应的目标文件索引分片,对所述目标文件索引分片对应的多个待处理文件进行处理。
11.可选地,所述根据所述预设协程数量n对所述文件索引进行分片,得到n个文件索引分片,包括:
12.确定所述文件索引中待处理文件总数;
13.判断所述待处理文件总数是否能被所述预设协程数量n整除;
14.若是,则根据所述预设协程数量n对所述文件索引进行平均分片,得到n个文件索引分片。
15.可选地,所述判断所述待处理文件总数是否能被所述预设协程数量n整除之后,所述方法还包括:
16.若否,则根据所述待处理文件总数以及所述所述预设协程数量n确定预估平均数;
17.根据所述预估平均数对所述文件索引进行分片,得到n个文件索引分片,其中,前n-1个文件索引分片对应的待处理文件个数与所述预估平均数一致。
18.可选地,所述根据若干待处理文件创建文件索引,包括:
19.读取待处理文件的根目录;
20.遍历所述根目录对应的子路径;
21.判断遍历到的子路径是否为目录路径;
22.若否,则将遍历到的子路径保存至切片,得到文件索引。
23.可选地,所述获取预设协程数量n,包括:
24.获取用户输入的效率提升指令;
25.根据所述效率提升指令确定对应的预设协程数量n。
26.可选地,所述获取预设协程数量n之后,所述方法还包括:
27.获取协程开启数目a;
28.根据所述预设协程数量n以及所述协程开启数目a对所述文件索引进行分片,得到a*n个文件索引分片;
29.以所述预设协程数量n为循环次数同步开启a个协程;
30.在当前循环过程中获取对应的a个文件索引分片,在所述a个协程中分别对所述a个文件索引分片对应的多个待处理文件进行处理。
31.可选地,所述获取协程开启数目a,包括:
32.获取运行性能信息;
33.根据所述运行性能信息确定对应的协程开启数目a。
34.此外,为实现上述目的,本发明还提出一种大批量文件处理装置,所述大批量文件处理装置包括:
35.创建模块,用于根据若干待处理文件创建文件索引;
36.获取模块,用于获取预设协程数量n;
37.分片模块,用于根据所述预设协程数量n对所述文件索引进行分片,得到n个文件索引分片;
38.启动模块,用于以所述预设协程数量n为循环次数启动协程;
39.处理模块,用于在目标循环过程中获取对应的目标文件索引分片,对所述目标文件索引分片对应的多个待处理文件进行处理。
40.此外,为实现上述目的,本发明还提出一种大批量文件处理设备,所述大批量文件处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的大批量文件处理程序,所述大批量文件处理程序配置为实现如上文所述的大批量文件处理方法。
41.此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有大批量文件处理程序,所述大批量文件处理程序被处理器执行时实现如上文所述的大批量文件处理方法。
42.本发明根据若干待处理文件创建文件索引;获取预设协程数量n;根据预设协程数量n对文件索引进行分片,得到n个文件索引分片;以预设协程数量n为循环次数启动协程;在目标循环过程中获取对应的目标文件索引分片,对目标文件索引分片对应的多个待处理文件进行处理。通过上述方式,对大批量文件进行分片,以预设协程数量循环启动协程,使用协程对各个分片对应的文件进行处理,达到异步处理的效果,从而大幅度提升运算效率,避免了持续占用计算机资源。
附图说明
43.图1是本发明实施例方案涉及的硬件运行环境的大批量文件处理设备的结构示意图;
44.图2为本发明大批量文件处理方法第一实施例的流程示意图;
45.图3为本发明大批量文件处理方法第二实施例的流程示意图;
46.图4为本发明大批量文件处理装置第一实施例的结构框图。
47.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
48.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
49.参照图1,图1为本发明实施例方案涉及的硬件运行环境的大批量文件处理设备结构示意图。
50.如图1所示,该大批量文件处理设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram),也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
51.本领域技术人员可以理解,图1中示出的结构并不构成对大批量文件处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
52.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及大批量文件处理程序。
53.在图1所示的大批量文件处理设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明大批量文件处理设备中的处理器1001、存储器1005可以设置在大批量文件处理设备中,所述大批量文件处理设备通过处理器1001调用存储器1005中存储的大批量文件处理程序,并执行本发明实施例提供的大批量文件处理方法。
54.本发明实施例提供了一种大批量文件处理方法,参照图2,图2为本发明大批量文件处理方法第一实施例的流程示意图。
55.本实施例中,所述大批量文件处理方法包括以下步骤:
56.步骤s10:根据若干待处理文件创建文件索引。
57.可以理解的是,本实施例的执行主体为大批量文件处理设备,所述大批量文件处理设备可以为计算机、服务器等设备,还可以为其他具备相同或相似功能的设备,本实施例对此不加以限制。
58.需要说明的是,创建文件索引的方式为将待处理文件的文件路径存储在切片(slice)中,保存有全部文件路径的切片即为文件索引,命名为file_indexes。
59.具体地,所述步骤s10,包括:读取待处理文件的根目录;遍历所述根目录对应的子
路径;判断遍历到的子路径是否为目录路径;若否,则将遍历到的子路径保存至切片,得到文件索引。
60.应当理解的是,递归读取若干待处理文件的根目录,并读取其中所有子文件及子目录的路径,判断读取到的是否为目录路径,将目录的路径全部过滤掉,仅保留文件路径。将读取的文件路径保存在一个切片中,得到文件索引。
61.步骤s20:获取预设协程数量n。
62.需要说明的是,预设协程数量n可以为提前设置的常量,还可以为根据用户的选择设置的数量,本实施例对此不加以限制。
63.具体地,所述步骤s20,包括:获取用户输入的效率提升指令;根据所述效率提升指令确定对应的预设协程数量n。
64.可以理解的是,效率提升指令为用户根据实际提升需求输入的指令,可选地,设置有选择按钮,用户通过选择按钮输入对应的效率提升指令,计算机根据需要提升的传输效率倍数将预设协程数量设置为对应的数量,例如需要传输效率提升10倍,则确定预设协程数量为10。
65.步骤s30:根据所述预设协程数量n对所述文件索引进行分片,得到n个文件索引分片。
66.需要说明的是,可选地,对文件索引按照随机数分为n个文件索引分片,进一步地,所述步骤s30,包括:确定所述文件索引中待处理文件总数;判断所述待处理文件总数是否能被所述预设协程数量n整除;若是,则根据所述预设协程数量n对所述文件索引进行平均分片,得到n个文件索引分片。
67.进一步地,所述判断所述待处理文件总数是否能被所述预设协程数量n整除之后,所述方法还包括:若否,则根据所述待处理文件总数以及所述所述预设协程数量n确定预估平均数;根据所述预估平均数对所述文件索引进行分片,得到n个文件索引分片,其中,前n-1个文件索引分片对应的待处理文件个数与所述预估平均数一致。
68.可以理解的是,假设定义协程数量为const max_routine=n,待处理文件总数为m,定义为file_indexes,表示m个文件需要使用n个协程进行异步传输。在使用协程进行传输之前需要先将m个文件拆分成n个分片,首先判断待处理文件总数是否能被预设协程数量整除,若是,则平均计算每个协程需要处理的文件索引分片中包含m/n个文件。若否,则计算平均值进行四舍五入得到预估平均数,利用预估平均数对前n-1个进行分片,剩下的则为最后一个分片所包含的数量。对文件索引进行分片的具体算法示例为round(float64(len(file_indexes))/float64(max_routine)),最后一个分片所包含的文件数量为总数减去前n-1个分片所包含的文件数量和,算法示例为len(file_indexes)-(round(float64(file_indexes)/float64(max_routine))*(max_routine-1))。
69.具体代码示例如下:
[0070][0071]
步骤s40:以所述预设协程数量n为循环次数启动协程。
[0072]
骤s50:在目标循环过程中获取对应的目标文件索引分片,对所述目标文件索引分片对应的多个待处理文件进行处理。
[0073]
需要说明的是,由于协程数量固定,本实施例以预设协程数量为循环次数,每次循环从索引切片中获取相对位置的分片即可拿到每个协程需要处理的文件索引分片。
[0074]
具体代码示例如下:
[0075][0076]
在具体实现中,在golang中利用go关键字调用函数即可使用协程。例如先建立一个文件处理函数,以上述步骤中获取到的文件索引分片作为函数的参数。具体代码示例如下:
[0077]
func processfile(path[]string){
[0078]
//循环分片进行文件处理
[0079]
}
[0080]
进一步地,在调用函数时使用go关键字即可以使用协程进行异步调用。具体代码示例如下:
[0081][0082][0083]
本实施例根据若干待处理文件创建文件索引;获取预设协程数量n;根据预设协程数量n对文件索引进行分片,得到n个文件索引分片;以预设协程数量n为循环次数启动协程;在目标循环过程中获取对应的目标文件索引分片,对目标文件索引分片对应的多个待处理文件进行处理。通过上述方式,对大批量文件进行分片,以预设协程数量循环启动协程,使用协程对各个分片对应的文件进行处理,达到异步处理的效果,从而大幅度提升运算效率,避免了持续占用计算机资源。
[0084]
参考图3,图3为本发明大批量文件处理方法第二实施例的流程示意图。
[0085]
基于上述第一实施例,本实施例大批量文件处理方法在所述步骤s20之后,还包括:
[0086]
步骤s301:获取协程开启数目a。
[0087]
具体地,所述步骤s301,包括:获取运行性能信息;根据所述运行性能信息确定对应的协程开启数目a。
[0088]
可以理解的是,协程开启数目为设置的同步开启的协程数目,在具体实现中,提前设置有运行性能范围与协程开启数目之间的映射关系,在获取到当前的运行性能信息时,确定当前的运行性能信息对应的运行性能范围,从而根据映射关系查找到对应的协程开启数目。运行性能信息至少包括cpu使用率、内存使用率,cpu使用率越高,协程开启数据越少,内存使用率越高,协程开启数据越少。
[0089]
步骤s302:根据所述预设协程数量n以及所述协程开启数目a对所述文件索引进行分片,得到a*n个文件索引分片。
[0090]
需要说明的是,假设待处理文件总数为m,本实施例中m个文件需要使用a个协程同步循环n次进行异步传输。在使用协程进行传输之前需要先将m个文件拆分成a*n个分片,首先判断待处理文件总数是否能被a*n整除,若是,则平均计算每个协程需要处理的文件索引分片包含m/(a*n)个文件。若否,则将待处理文件总数除以(a*n),计算平均值进行四舍五入得到预估平均数,利用预估平均数对前n-1个进行分片,剩下的则为最后一个分片所包含的
数量。
[0091]
步骤s303:以所述预设协程数量n为循环次数同步开启a个协程。
[0092]
步骤s304:在当前循环过程中获取对应的a个文件索引分片,在所述a个协程中分别对所述a个文件索引分片对应的多个待处理文件进行处理。
[0093]
需要说明的是,本实施例中每次循环中同步开启a个协程,每次循环从多个索引切片中获取各个协程需要处理的文件索引分片,从而通过a个协程对a个文件索引分片上的多个待处理文件进行处理。
[0094]
本实施例根据若干待处理文件创建文件索引;获取预设协程数量n;获取协程开启数目a;根据预设协程数量n以及协程开启数目a对文件索引进行分片,得到a*n个文件索引分片;以预设协程数量n为循环次数同步开启a个协程;在当前循环过程中获取对应的a个文件索引分片,在a个协程中分别对a个文件索引分片对应的多个待处理文件进行处理。通过上述方式,对大批量文件进行分片,以预设协程数量循环同步启动多个协程,同步使用多个协程对各个分片对应的文件进行处理,进一步提升运算效率,在运行环境允许的情况下快速处理文件,避免了持续占用计算机资源。
[0095]
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有大批量文件处理程序,所述大批量文件处理程序被处理器执行时实现如上文所述的大批量文件处理方法。
[0096]
由于本存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
[0097]
参照图4,图4为本发明大批量文件处理装置第一实施例的结构框图。
[0098]
如图4所示,本发明实施例提出的大批量文件处理装置包括:
[0099]
创建模块10,用于根据若干待处理文件创建文件索引。
[0100]
获取模块20,用于获取预设协程数量n。
[0101]
分片模块30,用于根据所述预设协程数量n对所述文件索引进行分片,得到n个文件索引分片。
[0102]
启动模块40,用于以所述预设协程数量n为循环次数启动协程。
[0103]
处理模块50,用于在目标循环过程中获取对应的目标文件索引分片,对所述目标文件索引分片对应的多个待处理文件进行处理。
[0104]
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
[0105]
本实施例根据若干待处理文件创建文件索引;获取预设协程数量n;根据预设协程数量n对文件索引进行分片,得到n个文件索引分片;以预设协程数量n为循环次数启动协程;在目标循环过程中获取对应的目标文件索引分片,对目标文件索引分片对应的多个待处理文件进行处理。通过上述方式,对大批量文件进行分片,以预设协程数量循环启动协程,使用协程对各个分片对应的文件进行处理,达到异步处理的效果,从而大幅度提升运算效率,避免了持续占用计算机资源。
[0106]
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
[0107]
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的大批量文件处理方法,此处不再赘述。
[0108]
在一实施例中,所述分片模块30,还用于确定所述文件索引中待处理文件总数;判断所述待处理文件总数是否能被所述预设协程数量n整除;若所述待处理文件总数能被所述预设协程数量n整除,则根据所述预设协程数量n对所述文件索引进行平均分片,得到n个文件索引分片。
[0109]
在一实施例中,若所述待处理文件总数不能被所述预设协程数量n整除,则所述分片模块30,还用于根据所述待处理文件总数以及所述所述预设协程数量n确定预估平均数;根据所述预估平均数对所述文件索引进行分片,得到n个文件索引分片,其中,前n-1个文件索引分片对应的待处理文件个数与所述预估平均数一致。
[0110]
在一实施例中,所述创建模块10,还用于读取待处理文件的根目录;遍历所述根目录对应的子路径;判断遍历到的子路径是否为目录路径;若否,则将遍历到的子路径保存至切片,得到文件索引。
[0111]
在一实施例中,所述获取模块20,还用于获取用户输入的效率提升指令;根据所述效率提升指令确定对应的预设协程数量n。
[0112]
在一实施例中,所述获取模块20,还用于获取协程开启数目a;
[0113]
所述分片模块30,还用于根据所述预设协程数量n以及所述协程开启数目a对所述文件索引进行分片,得到a*n个文件索引分片;
[0114]
所述启动模块40,还用于以所述预设协程数量n为循环次数同步开启a个协程;
[0115]
所述处理模块50,还用于在当前循环过程中获取对应的a个文件索引分片,在所述a个协程中分别对所述a个文件索引分片对应的多个待处理文件进行处理。
[0116]
在一实施例中,所述获取模块20,还用于获取运行性能信息;根据所述运行性能信息确定对应的协程开启数目a。
[0117]
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0118]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0119]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(read only memory,rom)/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0120]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献