Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

233
Visualizações
Ejecutando funciones anidadas usando numba

Estoy tratando de usar numba recientemente para acelerar partes de mi código en python. Estaba tratando de ejecutar la función 1 desde dentro de la función 2 mientras ambas están compiladas con numba, pero no funciona. Aquí está mi código:

 import numba as nb from math import acos from time import time @nb.jit("void()") def myfunc(): s = 0 for i in range(10000000): s += acos(0.5) print('The sum is: ', s) @nb.jit("void()") def myfunc2(): myfunc() tic = time() myfunc2() toc = time() print(toc-tic)

Cuando llamo a myfunc() , el código funciona y obtengo un resultado mucho más rápido que cuando no estoy usando numba. Sin embargo, cuando llamo a myfunc2 veo este error:

 File "~/.spyder-py3/temp.py", line 22, in <module> myfunc2() RuntimeError: missing Environment

¿Alguien tiene alguna idea de por qué llamar a una función desde dentro de otra no funciona en este caso?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Numba v0.39+

Se introdujo una solución en v0.39. Según las notas de la versión :

PR #2986: Arreglar la propagación del entorno

Ver github pull #2986 para más detalles.

Numba anterior a la v0.39

Este es un problema conocido. Como se describe en el número 2411 de github :

Parece que el puntero del entorno no se pasa correctamente a través de las funciones de nopython.

Modificar como se muestra a continuación para eliminar print() de las funciones numba debería solucionar esto:

 import numba as nb from math import acos from time import time @nb.jit("void()") def myfunc(): s = 0 for i in range(10000000): s += acos(0.5) return s @nb.jit("void()") def myfunc2(): return myfunc() tic = time() x = myfunc2() # 10471975.511390356 toc = time() print(toc-tic)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda