cProfile for Python无法识别函数名称

时间:2012-01-17 20:00:24

标签: python profiling cprofile

我在一个名为email的应用程序中有一个功能,我想要分析。当我尝试做这样的事情时,它会爆炸

   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如何评估字符串(在全局/本地命名空间中查找func名称)?

1 个答案:

答案 0 :(得分:35)

问题是您在方法定义中导入了send_email

我建议你使用runctx

cProfile.runctx('send_email()', None, locals())

来自the official documentation

cProfile.runctx(command, globals, locals, filename=None)

此函数类似于run(),添加了参数以提供命令字符串的全局变量和本地字典。