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.

