我有一个要分析的名为电子邮件的应用程序中的功能。当我尝试做这样的事情时,它会炸毁

   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/

10-10 00:57