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.