我有一个要分析的名为电子邮件的应用程序中的功能。当我尝试做这样的事情时,它会炸毁
from django.core.management import BaseCommand
import cProfile
class Command(BaseCommand):
def handle(self, *args, **options):
from email.modname import send_email
cProfile.run('send_email(user_id=1, city_id=4)')
当我运行此管理命令时,它将引发以下错误:
exec cmd in globals, locals
File "<string>", line 1, in <module>
NameError: name 'send_email' is not defined
我在这里想念什么? cProfile如何评估字符串(在全局/本地 namespace 中查找函数名称)?
最佳答案
问题是您在方法定义中导入了send_email
。
我建议您使用runctx
:
cProfile.runctx('send_email()', None, locals())
从the official documentation:
cProfile.runctx(command, globals, locals, filename=None)
此函数类似于run(),带有添加的参数来为命令字符串提供全局和本地字典。
关于python - Python的cProfile无法识别函数名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8900899/