lina wrote:

> On Sat, Dec 10, 2011 at 6:09 PM, Peter Otten <__pete...@web.de> wrote:
>> surya k wrote:
>>
>>> Finding factorial of 8 or 9 isn't big. If I would like to find factorial
>>> of 32327, how can I ?
>>
>> gmpy is a library designed for working with large numbers. Compare:
>>
>>>>> import time
>>>>> def bench(f, *args):
>> ...     start = time.time()
>> ...     try:
>> ...             return f(*args)
>> ...     finally:
>> ...             print time.time() - start
>> ...
>>>>> def fac(n):
>> ...     f = 1
>> ...     for i in xrange(1, n+1):
>> ...             f *= i
>> ...     return f
>> ...
> 
> sorry to interrupt, I tried your example,
> 
> $ cat time_func.py
> #!/usr/bin/python3
> 
> import time
> 
> def bench(f, *args):
>     start = time.time()
>     try:
>         return f(*args)
>     finally:
>         print(time.time() - start)
> 
> def fac(n):
>     f = 1
>     for i in range(1,n+1):
>         f *= i
>     return f
> 
> on idle3
> 
>>>> import time_func
>>>> time_func.bench(time_func.fac,1000)
> 0.0015549659729003906
> 402...[snip many digits]...000
> 
> why the output so long,

bench() calls the function passed as its first argument with the arguments 
that follow, prints the time this function takes and returns the result of 
the function call. In the case of

bench(fac, 1000)

that result is fac(1000), or 1*2*3*4*...*997*998*999*1000 -- a number with
2568 digits. To avoid printing out these huge numbers I assigned them to x

>>>>> x = bench(fac, 1000)
>> 0.00276589393616

Therfore you only see the time in seconds which is printed rather than 
returned by bench().

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to