小编Ver*_*rma的帖子

Hashlib:要在 md5.update() 中使用的最佳块大小

这是参考Get MD5 hash of big files in Python and Hashlib in Windows and Linux

针对这两个问题,建议在函数 md5.update() 中使用更大的数据块来提高性能。

我所做的所有测试似乎都表明使用较小的块可以提供最佳性能。

考虑以下代码:

def test(factor):
    filehash = hashlib.md5()
    blk_size_to_read = filehash.block_size * (2**factor)
    with open(largetestfile, 'rb') as f:
        read_data = f.read(blk_size_to_read)
        filehash.update(read_data)
    filehash.digest()

if __name__ == '__main__':
    for ctr in xrange(0, 12):
        funcstr = "test({})".format(str(ctr))
        timetaken = timeit.timeit(funcstr, setup="from __main__ import test", number = 5000)
        print "Factor: {} Time: {}".format(str(ctr), str(timetaken))
Run Code Online (Sandbox Code Playgroud)

我所做的所有测试都表明,使用factor0 或 1(即 64 或 128 字节)时可实现最佳性能。

为什么我看到的结果与引用的问题中指出的结果不同?

我尝试过大小​​从 700MB …

python md5 hashlib

5
推荐指数
1
解决办法
3423
查看次数

Python代码评估顺序?

以下代码的输出是

5
3
Run Code Online (Sandbox Code Playgroud)

我是Python新手,有人可以向我解释原因吗?

import sys

def Main():
     str='1+2'
     print eval(str)

class A:
    def __init__(self):
        self.x = 5

a = A()
print a.x

if __name__=="__main__":
    Main()
Run Code Online (Sandbox Code Playgroud)

python operator-precedence

2
推荐指数
1
解决办法
238
查看次数

填写python列表中缺少的数据

我有一个列表字典,每个列表都有不同数量的元素.我想将默认值添加到每个列表的开头,以使它们具有相同的大小.

所以,如果我从...开始

data = {'data1': [1,2,3], 'data2': [12,23,34,45,44], 'data3': [7,8,9,10], 'data4': [71, 72, 73, 74, 75, 76, 78], 'data5': []}
Run Code Online (Sandbox Code Playgroud)

我想最终得到:

data1: [0, 0, 0, 0, 1, 2, 3]
data2: [0, 0, 12, 23, 34, 45, 44]
data3: [0, 0, 0, 7, 8, 9, 10]
data4: [71, 72, 73, 74, 75, 76, 78]
data5: [0, 0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)

我想出了以下代码:

maxlen = 0
for d in data:
    if maxlen < len(data[d]):
        maxlen = len(data[d])

for d in data: …
Run Code Online (Sandbox Code Playgroud)

python

1
推荐指数
1
解决办法
846
查看次数

标签 统计

python ×3

hashlib ×1

md5 ×1

operator-precedence ×1