Невозможно измерить производительность сериализатора с помощью cProfile

Я пытаюсь использовать cProfile для сравнения между serializers.ModelSerializer и serializers.Serializer в соответствии с этим учебником .

Пожалуйста, ознакомьтесь с учебником, прежде чем продолжить чтение, это будет полезно для вас!

Сериализаторы:

from django.contrib.auth.models import User

from rest_framework import serializer


class UserModelSerializer(serializers.ModelSerializer):    
    class Meta:
        model = User
        fields = [
            'id',
            'username',
        ]


class UserSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    username = serializers.CharField()

Просмотров:

from . serializers import UserModelSerializer, UserSerializer

from rest_framework.response import Response
from rest_framework.views import APIView

import cProfile


class TestApi(APIView):

    def get(self, request):
        u = User.objects.get(username='hamza')
        assert u.username == 'hamza' # just to ensure it fetches the user

        data = UserModelSerializer(u).data
        cProfile.run('for _ in range(5000): data')

        return Response(data)

В views я просто создаю GET конечную точку и пытаюсь запустить cProfile но это дает мне ошибку:

  NameError: name 'data' is not defined

но если я закомментирую строку cProfile.run('for _ in range(5000): data')

в views и попробуйте получить доступ к data и отправить его в Response без использования cProfile это будет работать нормально!

Итак, вопрос в том, почему cProfile не видит UserModelSerializer?

Вернуться на верх