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. 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> 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 >>> >>> 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. >>> 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. >>> >>> >>> >>> -- >>> >>> Philip Mountifield >>> Formac Electronics Ltd >>> tel +44 (0) 1225 837333 >>> fax +44 (0) 1225 430995 >>> pmountifi...@formac.netwww.formac.netwww.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. >>> >> >> -- > 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. > 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. > > > > -- > > Philip Mountifield > Formac Electronics Ltd > tel +44 (0) 1225 837333 > fax +44 (0) 1225 430995 > pmountifi...@formac.netwww.formac.netwww.telgas.net > > -- 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/-/hMxgXN_ny0oJ. 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.