É muito comum escutar no meio acadêmico que o motivo de não se utilizar o PYTHON é que o mesmo, por ser uma linguagem script é muito lento. Na verdade o que está por traz disso é o fato de que a linguagem dominante na ciência (inclusive no desenvolvimento de modelos que fazem projeção de que as geleiras do Himalaia irão derreter em 2020 ;p ) é FORTRAN 77.
É verdade sim que rodar a discretização de uma equação diferencial parcial (EDP) em PYTHON é mais lenta. Mas para isso, temos a solução, usar o melhor de dois mundo, com f2py é possível compilar uma função em fortran empacota-la ("wrap") e chama-la em python. Dessa forma, é possível fazer só a discretização da EDP em fortran, na forma de uma função por exemplo, e chama-la em python.
Segue um "Oi Mundo" de como fazer isso.
Primeiro vamos ao código em FORTRAN 77.
c file: oimundo.f
subroutine oi(a)
real*8 a
cf2py real intent(in) a
write(6,*) 'Oi Mundo! O valor de a e: ',a
end
Agora vamos empacotar essa função para ser entendida pelo python.
sh> f2py -c -m oimundo oimundo.f
O comando -m cria o modulo oimundo já o comando -c compila o arquivo oimundo.f
Feito isso é só rodar o python
sh> python
>>import oimundo
>>oimundo.oi(5)
>> Oi Mundo! O valor de a e: 5.0
numpy não pode ajudar?
ResponderExcluirDesculpe a demora na resposta.
ResponderExcluirNumpy ajuda muito, mas o desempenho de python com fortran é melhor que python com numpy. Na página do scipy tem um teste de desempenho: http://www.scipy.org/PerformancePython
Na tabela de desempenho que da página tem a seguinte informação:
Para uma grade de 500x500 para 100 iterações. A execução com numpy foi de 29.3 segundos, já de python com fortran foi 2,9 segundos.