You probably want the profile module from the standard library. This will tell you all sorts of useful things about how much time functions are taking and how many times they are called etc...

http://docs.python.org/library/profile.html#module-profile

Regards
Phil

On 17/04/2012 13:48, Arruda wrote:
yes, I see, but how can I measure this? Do you know the function that is used?
Thanks for the help.

Em terça-feira, 17 de abril de 2012 05h39min24s UTC-3, Philip escreveu:

    Are you changing the definition of the function each time, or just
    effectively making duplicates of some common function under
    different names?

    You can do things like this:

    def make_funct(blah):
        def inner():
            print blah

        return inner

    Then make a few of them with different names and pre-assigned
    config via the parameters:

    f1 = make_funct('Hello World!')
    f2 = make_funct('Foo')

    And call 'em (with no parameters):

    f1()    =>    prints Hello World!
    f2()    =>    prints Foo

    Perhaps that's not what you're looking for though?

    In terms of performance, I suggest trying out both approaches and
    measuring the time taken to do it a few hundred or thousand times
    and compare.

    Regards
    Phil


    On 16/04/2012 17:55, Arruda wrote:
    Hummm, I see, thanks for that, I didn't know about type.
    And is there a way to generate functions too?(I was also doing it
    using exec).

    And do you have any idea of how can I see the difference in
    performance when using one or the other?
    Thanks.

    Em segunda-feira, 16 de abril de 2012 13h45min58s UTC-3,
    Jefferson Heard escreveu:

        Check https://github.com/JeffHeard/ga_dynamic_models
        <https://github.com/JeffHeard/ga_dynamic_models>.  It may be
        similar to what you're looking for.  Even if you don't want
        the code, you can see a way of dynamically generating models.

        On Mon, Apr 16, 2012 at 12:40 PM, Philip Mountifield
        <pmountifi...@formac.net <mailto:pmountifi...@formac.net>> wrote:

            Did you know that you can use the type function to
            dynamiclly generate a class definition?

            See
            http://docs.python.org/library/functions.html?highlight=type#type
            <http://docs.python.org/library/functions.html?highlight=type#type>

            From the example:

            >>>  class  X(object):
            ...     a  =  1

            Is exactly the same as doing...

            >>>  X  =  type('X',  (object,),  dict(a=1))

            No exec required...

            Regards
            Phil



            On 16/04/2012 17:19, Arruda wrote:
            I'm doing something like this to generate some
            models dynamically:

                SIMILAR_MODELS_TEMPLATE=
                """
                @some_decorator
                class %(PREFIX)sModel (Some_Abs_model):
                    \"""%(DESCRIPTION)s
                    \"""
                    pass
                """


            then I have a factory:

                def similar_models_factory(prefix,description):
                     format_dict = {
                                          'PREFIX' : prefix,
                                          'DESCRIPTION' : description,
                     }
                     cls_name = "%sModel" % prefix
                     cls_source = SIMILAR_MODELS_TEMPLATE % format_dict

                     exec(cls_source)
                     new_cls = locals().get(cls_name)
                     return new_cls


            And finally I have in the models.py:

                from my_factories import similar_models_factory

                SIMILAR_MODELS_LIST =(
                    {'prefix': 'Foo', 'desc' : 'Foo model and etc..',},
                    {'prefix': 'Bars', 'desc' : 'Bars model and
                etc..',},
                .....
                )

                for smodel in SIMILAR_MODELS_LIST:
                    cls = similar_models_factory(smodels['prefix'],
                smodels['desc'])
                    vars()[cls.__name__] = cls


            And this gives my just what I want, but I read somewhere
            that if you do:

                exec ""

            It would be too costly, and I would like to know if this
            would have some heavy load in my project(and if please,
            how can I calculate this, to compare?)
            Thanks!
-- You received this message because you are subscribed to
            the Google Groups "Django users" group.
            To view this discussion on the web visit
            https://groups.google.com/d/msg/django-users/-/64JCLnsIFu0J
            <https://groups.google.com/d/msg/django-users/-/64JCLnsIFu0J>.
            To post to this group, send email to
            django-users@googlegroups.com
            <mailto:django-users@googlegroups.com>.
            To unsubscribe from this group, send email to
            django-users+unsubscr...@googlegroups.com
            <mailto:django-users+unsubscr...@googlegroups.com>.
            For more options, visit this group at
            http://groups.google.com/group/django-users?hl=en
            <http://groups.google.com/group/django-users?hl=en>.


--
            Philip Mountifield
            Formac Electronics Ltd
            tel+44 (0) 1225 837333
            fax+44 (0) 1225 430995

            pmountifi...@formac.net  <mailto:pmountifi...@formac.net>
            www.formac.net  <http://www.formac.net>
            www.telgas.net  <http://www.telgas.net>

-- You received this message because you are subscribed to
            the Google Groups "Django users" group.
            To post to this group, send email to
            django-users@googlegroups.com
            <mailto:django-users@googlegroups.com>.
            To unsubscribe from this group, send email to
            django-users+unsubscr...@googlegroups.com
            <mailto:django-users%2bunsubscr...@googlegroups.com>.
            For more options, visit this group at
            http://groups.google.com/group/django-users?hl=en
            <http://groups.google.com/group/django-users?hl=en>.


-- You received this message because you are subscribed to the
    Google Groups "Django users" group.
    To view this discussion on the web visit
    https://groups.google.com/d/msg/django-users/-/pxR15NDv5RUJ
    <https://groups.google.com/d/msg/django-users/-/pxR15NDv5RUJ>.
    To post to this group, send email to
    django-users@googlegroups.com <mailto:django-users@googlegroups.com>.
    To unsubscribe from this group, send email to
    django-users+unsubscr...@googlegroups.com
    <mailto:django-users+unsubscr...@googlegroups.com>.
    For more options, visit this group at
    http://groups.google.com/group/django-users?hl=en
    <http://groups.google.com/group/django-users?hl=en>.


--
    Philip Mountifield
    Formac Electronics Ltd
    tel  +44 (0) 1225 837333
    fax  +44 (0) 1225 430995

    pmountifi...@formac.net  <mailto:pmountifi...@formac.net>
    www.formac.net  <http://www.formac.net>
    www.telgas.net  <http://www.telgas.net>



--

Philip Mountifield
Formac Electronics Ltd
tel  +44 (0) 1225 837333
fax  +44 (0) 1225 430995

pmountifi...@formac.net
www.formac.net
www.telgas.net

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to