Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用line_profiler对棱锥视图进行纵断面_Python_Decorator_Pyramid_Python Decorators_Line Profiler - Fatal编程技术网

Python 使用line_profiler对棱锥视图进行纵断面

Python 使用line_profiler对棱锥视图进行纵断面,python,decorator,pyramid,python-decorators,line-profiler,Python,Decorator,Pyramid,Python Decorators,Line Profiler,使用line_profiler分析棱锥视图时遇到问题。由于Pyramid的@view\u config不能以典型方式与@profile一起使用,因此我修改了用于其他目的的视图装饰器: def view_decorator_profile(view_callable): def inner(context, request): request._mso = MySpecialObject() log.debug('################## VIE

使用line_profiler分析棱锥视图时遇到问题。由于Pyramid的
@view\u config
不能以典型方式与
@profile
一起使用,因此我修改了用于其他目的的视图装饰器:

def view_decorator_profile(view_callable):
    def inner(context, request):
        request._mso = MySpecialObject()
        log.debug('################## VIEW_CALLABLE %s', view_callable)
        profile.add_function(view_callable)
        return view_callable(context, request)
    return inner
我以标准金字塔的方式使用它:

@view_config(decorator=view_decorator_profile, route_name='myroute', renderer='....', permission='...')
def my_callable(...):
现在,分析运行。。除了金字塔似乎有一些黑魔法,而不是对
my_callable
进行分析,而是对
rendered_view
进行分析

见:

现在,我确信我在decorator中得到的
视图\u callable
是正确的:
log.debug
记录正确的名称(
my\u callable

如何使Pyramid/line_profiler配置文件可调用

Function: rendered_view at line 353

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   353                                                   def rendered_view(context, request):
   354                                                       renderer = view_renderer
   355                                                       result = view(context, request)
   356                                                       if result.__class__ is Response: # potential common case
   357                                                           response = result
   358                                                       else:
   359                                                           registry = self.registry
   360                                                           # this must adapt, it can't do a simple interface check
   361                                                           # (avoid trying to render webob responses)
   362                                                           response = registry.queryAdapterOrSelf(result, IResponse)
   363                                                           if response is None:
   364                                                               attrs = getattr(request, '__dict__', {})
   365                                                               if 'override_renderer' in attrs:
   366                                                                   # renderer overridden by newrequest event or other
   367                                                                   renderer_name = attrs.pop('override_renderer')
   368                                                                   renderer = renderers.RendererHelper(
   369                                                                       name=renderer_name,
   370                                                                       package=self.kw.get('package'),
   371                                                                       registry = registry)
   372                                                               if '__view__' in attrs:
   373                                                                   view_inst = attrs.pop('__view__')
   374                                                               else:
   375                                                                   view_inst = getattr(view, '__original_view__', view)
   376                                                               response = renderer.render_view(request, result, view_inst,
   377                                                                                               context)
   378                                                       return response

2016-02-23 17:43:34,259 INFO    base.py:159  shutdown             | Scheduler has been shut down
2016-02-23 17:43:34,288 INFO __init__.py:195  atexit_handler       |