我需要通过网络传输大文件,并且需要每小时为它们创建校验和。所以生成校验和的速度对我来说至关重要。
不知何故,我无法让 zlib.crc32 和 zlib.adler32 在 Windows XP Pro 64 位机器上处理大于 4GB 的文件。我怀疑我在这里达到了 32 位限制?使用 hashlib.md5 我可以得到一个结果,但问题是速度。为 4.8GB 文件生成一个 md5 大约需要 5 分钟。任务管理器显示该进程仅使用一个核心。
我的问题是:
- 有没有办法让 crc 在大文件上工作?我更喜欢使用 crc 而不是 md5
- 如果没有,那么有没有办法加快 md5.hexdigest()/md5.digest?或者在这种情况下任何hashlib hexdigest/digest?也许将其拆分为多线程进程?我怎么做?
PS:我正在研究类似于“资产管理”系统的东西,有点像 svn,但资产由大型压缩图像文件组成。这些文件有微小的增量更改。检测更改和错误检测需要散列/校验和。