需要统计服务器上的视频信息,写了个脚本,使用 MediaInfo 获取视频信息,但是因为文件数量比较多,便利效率比较低(单进程每秒 1.5 个文件),后来使用了 Multiprocessing 多进程,可以达到效率是高了,但是一个小时也才能获取到 1.5 万左右的文件信息。
求问,有什么比较好的方法可以较高提高效率么?
注:视频文件在文件服务器上,千兆网络挂载过来,使用了 Multiprocessing 后,遍历时速度带宽大约到了 800~900M,主要代码如下:
pool_size = multiprocessing.cpu_count() * 2 - 4
with multiprocessing.Pool(pool_size) as Pool:
walk = os.walk(path)
fn_gen = itertools.chain.from_iterable((os.path.join(root, file) for file in files) for root, dirs, files in walk)
Pool.map(video_handler, fn_gen)