Thanks Massimo.

that was precisely the information I needed. When in a module the function 
is compiled once and is not recompiled as long as the web2py server is 
running. 
That is exactly the behaviour I hoped for. The first call of the function 
is slow due to the time needed for compilation but the next call is as fast 
as expected.

Best

Leo

Am Donnerstag, 15. Januar 2015 17:15:49 UTC+1 schrieb Massimo Di Pierro:
>
> Define the function in a module and import the function from the module. 
> Do not put it in a model or controller. Those are not normal python modules 
> and who knows what goes on. Anyway, your function would be re-compiled at 
> every iteration.
>
> I wrote this (https://github.com/mdipierro/ocl) works like numba (less 
> powerful probably) and it would have the same problem.
>
> Massimo
>
> On Thursday, 15 January 2015 05:10:36 UTC-6, Leopold Haimberger wrote:
>>
>> Hi
>>
>> I am using the numba just in time compiler (version 0.16) for speeding up 
>> numerical calculations under python.
>>
>> For testing it I have slightly modified the standard web2py welcome 
>> application such that the index controller function calls a tiny function 
>> numba_add which
>> adds 2 numbers. 
>>
>>
>>
>> from numba import *
>>
>> #@jit
>> def numba_add(x,y):
>>     z=x+y
>>     return z
>>
>> def index():
>>     """
>>     example action using the internationalization operator T and flash
>>     rendered by views/default/index.html or views/generic.html
>>
>>     if you need a simple wiki simply replace the two lines below with:
>>     return auth.wiki()
>>     """
>>     response.flash = T("7+4={}".format(numba_add(7.0,4.0)))
>>     return dict(message=T('Hello World {}'.format(numba_add(7.0,4.0))))
>>
>>
>> When running it,  numba is imported and if I comment out the @jit 
>> decorator the application works well. However if I use the @jit 
>> decorator to compile it I get the error ticket below.
>> Does anyone have a clue what could be wrong. I have now idea what the 
>> error message means.
>>
>> Leo Haimberger
>>
>> Error ticket for "welcome"Ticket ID
>>
>> 131.130.157.11.2015-01-15.10-57-59.c400457e-a478-49cf-b014-acde33d01266
>> <type 'exceptions.KeyError'> "Failed at object mode 
>> backend\n'__restricted__'"Versionweb2py™Version 
>> 2.9.11-stable+timestamp.2014.09.15.23.35.11Traceback
>>
>> 1.
>> 2.
>> 3.
>> 4.
>> 5.
>> 6.
>> 7.
>> 8.
>> 9.
>> 10.
>> 11.
>> 12.
>> 13.
>> 14.
>> 15.
>> 16.
>> 17.
>> 18.
>> 19.
>> 20.
>> 21.
>> 22.
>> 23.
>> 24.
>> 25.
>> 26.
>>
>> Traceback (most recent call last):
>>   File "/fio/srvx7/leo/python/web2py/gluon/restricted.py", line 224, in 
>> restricted
>>     exec ccode in environment
>>   File 
>> "/fio/srvx7/leo/python/web2py/applications/welcome/controllers/default.py" 
>> <http://localhost:8000/admin/default/edit/welcome/controllers/default.py>, 
>> line 79, in <module>
>>   File "/fio/srvx7/leo/python/web2py/gluon/globals.py", line 392, in <lambda>
>>     self._caller = lambda f: f()
>>   File 
>> "/fio/srvx7/leo/python/web2py/applications/welcome/controllers/default.py" 
>> <http://localhost:8000/admin/default/edit/welcome/controllers/default.py>, 
>> line 26, in index
>>     response.flash = T("7+4={}".format(numba_add(7.0,4.0)))
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/dispatcher.py",
>>  line 153, in _compile_for_args
>>     return self.jit(sig)
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/dispatcher.py",
>>  line 144, in jit
>>     return self.compile(sig, **kws)
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/dispatcher.py",
>>  line 279, in compile
>>     flags=flags, locals=locs)
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/compiler.py",
>>  line 552, in compile_extra
>>     return pipeline.compile_extra(func)
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/compiler.py",
>>  line 263, in compile_extra
>>     return self.compile_bytecode(res.result, func_attr=self.func_attr)
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/compiler.py",
>>  line 275, in compile_bytecode
>>     return self._compile_bytecode()
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/compiler.py",
>>  line 501, in _compile_bytecode
>>     return self._run_pipeline(pipelines)
>>   File 
>> "/opt/anaconda/lib/python2.7/site-packages/numba-0.16.0-py2.7-linux-x86_64.egg/numba/compiler.py",
>>  line 526, in _run_pipeline
>>     raise _raise_error(msg, res.exception)
>> KeyError: "Failed at object mode backend\n'__restricted__'"
>>
>> In file: 
>> /fio/srvx7/leo/python/web2py/applications/welcome/controllers/default.py
>>
>> 1.
>> 2.
>> 3.
>> 4.
>> 5.
>> 6.
>> 7.
>> 8.
>> 9.
>> 10.
>> 11.
>> 12.
>> 13.
>> 14.
>> 15.
>> 16.
>> 17.
>> 18.
>> 19.
>> 20.
>> 21.
>> 22.
>> 23.
>> 24.
>> 25.
>> 26.
>> 27.
>> 28.
>> 29.
>> 30.
>> 31.
>> 32.
>> 33.
>> 34.
>> 35.
>> 36.
>> 37.
>> 38.
>> 39.
>> 40.
>> 41.
>> 42.
>> 43.
>> 44.
>> 45.
>> 46.
>> 47.
>> 48.
>> 49.
>> 50.
>> 51.
>> 52.
>> 53.
>> 54.
>> 55.
>> 56.
>> 57.
>> 58.
>> 59.
>> 60.
>> 61.
>> 62.
>> 63.
>> 64.
>> 65.
>> 66.
>> 67.
>> 68.
>> 69.
>> 70.
>> 71.
>> 72.
>> 73.
>> 74.
>> 75.
>> 76.
>> 77.
>> 78.
>> 79.
>> 80.
>>
>> # -*- coding: utf-8 -*-
>> # this file is released under public domain and you can use without 
>> limitations
>>
>> #########################################################################
>> ## This is a sample controller
>> ## - index is the default action of any application
>> ## - user is required for authentication and authorization
>> ## - download is for downloading files uploaded in the db (does streaming)
>> ## - api is an example of Hypermedia API support and access control
>> #########################################################################
>> from numba import *
>>
>> @jit
>> def numba_add(x,y):
>>     z=x+y
>>     return z
>>
>> def index():
>>     """
>>     example action using the internationalization operator T and flash
>>     rendered by views/default/index.html or views/generic.html
>>
>>     if you need a simple wiki simply replace the two lines below with:
>>     return auth.wiki()
>>     """
>>     response <http://localhost:8000/examples/global/vars/response>.flash = T 
>> <http://localhost:8000/examples/global/vars/T>("7+4={}".format(numba_add(7.0,4.0)))
>>     return dict(message=T 
>> <http://localhost:8000/examples/global/vars/T>('Hello World 
>> {}'.format(numba_add(7.0,4.0))))
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to