1、如果不考虑性能问题,该问题解决起来很简单。
2、如果文件数量很多,且分布在不同的文件夹,用生成器扫描文件夹以及子文件夹中所有的文件,使得遍历获取文件不成为瓶颈。
3、虽然需求设定的时候,小文件都是大概11k左右,但是考虑程序的代码可扩展性,我假设这些小文件中可能存在某个大文件,为了避免该大文件造成阻塞,我设计成将每个文件传给一个独立进程处理,处理大文件进程一直被占用,但是处理小文件的进程处理完该小文件后,可以继续处理其他小文件。
4、如果有200个进程,其中有一个进程处理大文件被阻塞,而其他所有小文件都已经被处理了,导致整体任务完成实际被延迟,而且199个进程一直处于空闲状态,计算资源没有得到很好的利用。
5、分两步走,第一步所有进程仅仅将文件按规定大小拆分,然后放在队列中。
6、所有的进程参与队列中的内容处理。
7、文件句柄不可以序列化,因此不能在进程间传递,将文件路径在进程间传递。
8、开启进程池
9、进程池中的进程优先处理文件拆分,放入队列中这个动作。
10、处理完毕后,所有进程资源处理队列中的任务。