我正在尝试测量读取所需的时间,然后加密某些数据(独立)。但我似乎无法在timeit中访问预先创建的数据obj(因为它在自己的虚拟环境中运行)
这很好用(定时文件读取操作):
t = timeit.Timer("""
openFile = open('mytestfile.bmp', "rb")
fileData = openFile.readlines()
openFile.close()""")
readResult = t.repeat(1,1)
print ("\Finished reading in file")
以下不起作用,因为我无法访问'fileData'obj。我不能在timeit函数内再次创建它,否则会增加整体执行时间。
时序加密操作:
tt = timeit.Timer("""
from Crypto.Cipher import AES
import os
newFile = []
key = os.urandom(32)
cipher = AES.new(key, AES.MODE_CFB)
for lines in fileData:
newFile = cipher.encrypt(lines)""")
encryptResult = tt.repeat(1,1)
答案 0 :(得分:1)
timeit采用仅运行一次的设置参数
来自文档:
setup:要执行一次的语句 最初(默认'通过')
例如:
setup = """
from Crypto.Cipher import AES
import os
newFile = []
fileData = open('filename').read()
"""
stmt = """
key = os.urandom(32)
cipher = AES.new(key, AES.MODE_CFB)
for lines in fileData:
newFile = cipher.encrypt(lines)"""
tt = timeit.Timer(stmt, setup)
tt.repeat()
答案 1 :(得分:0)
您可以使用setup
类的timeit.Timer
参数,如下所示:
tt = timeit.Timer("""
from Crypto.Cipher import AES
import os
newFile = []
key = os.urandom(32)
cipher = AES.new(key, AES.MODE_CFB)
for lines in fileData:
newFile = cipher.encrypt(lines)""",
setup = "fileData = open('mytestfile.bmp', 'rb').readlines()")
encryptResult = tt.repeat(1,1)
setup
代码只运行一次。