Can';t在python中使用带有timeit.Time模块的数据对象

Can';t在python中使用带有timeit.Time模块的数据对象,python,performance,timeit,Python,Performance,Timeit,我试图测量读取然后加密一些数据(独立)所需的时间。但我似乎无法在timeit内访问预先创建的数据obj(因为它在自己的虚拟环境中运行) 这工作正常(定时文件读取操作): 因为我无法访问“fileData”obj,下面的命令不起作用。我不能在timeit函数中再次创建它,否则会增加总体执行时间 定时加密操作: tt = timeit.Timer(""" from Crypto.Cipher import AES import os newFile = [] key = os.urandom(32)

我试图测量读取然后加密一些数据(独立)所需的时间。但我似乎无法在timeit内访问预先创建的数据obj(因为它在自己的虚拟环境中运行)

这工作正常(定时文件读取操作):

因为我无法访问“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)
接受仅运行一次的设置参数

从文档中:

设置:要执行一次的语句 最初(默认为“通过”)

例如:

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()
接受仅运行一次的设置参数

从文档中:

设置:要执行一次的语句 最初(默认为“通过”)

例如:

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()

您可以使用
timeit.Timer
类的
setup
参数,如下所示:

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
代码只运行一次。

您可以使用
timeit.Timer
类的
setup
参数,如下所示:

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)

设置
代码只运行一次。

哎呀,我想娜迪亚比我快了几分钟。哎呀,我想娜迪亚比我快了几分钟。