Python para Cython

261 views
Skip to first unread message

Bruno Bkr

unread,
Dec 17, 2015, 11:44:06 AM12/17/15
to Python Brasil
Boa tarde!
Alguem poderia me passar a "receita de bolo" de como converter Python em Cython,para que a mesma possa ser convertida em .c?

Igor dos Santos Montagner

unread,
Dec 17, 2015, 11:50:10 AM12/17/15
to Python Brasil
Bruno,

como eu não encontrei muito material sobre Cython resolvi escrever alguns tutoriais[1, 2, 3]. Dependendo do tipo de computação que você está fazendo pode valer a pena olhar primeiro Numba[4] (e um pequeno guia que escrevi sobre numba[5]). Sei que a propaganda pessoal ficou meio forte aqui, mas eu realmente não conheço outros materiais em português.

[1] http://igormontagner.blogspot.com/2015/11/acelerando-programas-usando-cython.html
[2] http://igormontagner.blogspot.com/2015/11/acelerando-programas-usando-cython_13.html
[3] http://igormontagner.blogspot.com/2015/11/acelerando-programas-usando-cython_27.html
[4] http://numba.pydata.org/
[5] http://igormontagner.blogspot.com/2015/12/acelerando-python-usando-numba.html

Bruno Bkr

unread,
Dec 17, 2015, 5:32:20 PM12/17/15
to Python Brasil

Valeu Igor!

Ta dificil mesmo material em portugues,vou ler tudo e ver se aprendo isso,pois preciso muito(calculos pesados,no python puro ta lento,mesmo com otimizaçoes...).

Bruno Bkr

unread,
Dec 19, 2015, 6:55:06 AM12/19/15
to Python Brasil
Entao Igor,li seu artigos e tentei compilar meu prog,mas deu um monteeee de erros na compilaçao com o Cython,tentei de tudo e nada. Se puder compilar esse programinha pra mim em .c me ajudaria muito,rsrs

https://gist.github.com/bbeckercontato/74b5bb32162791a6792d#file-zphi42-py

Ou se alguem mais quiser fazer essa caridade,rsrsrs

De qualquer forma valeu!!!


Em quinta-feira, 17 de dezembro de 2015 14:50:10 UTC-2, Igor dos Santos Montagner escreveu:

Igor dos Santos Montagner

unread,
Dec 19, 2015, 2:12:58 PM12/19/15
to Python Brasil
Você está usando Linux ou Windows? Precisa ter algum compilador c instalado (gcc no linux e ou mingw32bits ou visual studio no windows) mais os cabeçalhos para compilar coisas com libpython (python-dev no linux, incluso já no windows).

Bruno Bkr

unread,
Dec 19, 2015, 2:56:13 PM12/19/15
to python...@googlegroups.com
Tenho o Linux,ja instalei o Cython e gcc,ate compilou,mas cheio de erros)...

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/6j4cZn0ScGI/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Bruno Bkr

unread,
Dec 19, 2015, 3:19:45 PM12/19/15
to Python Brasil
ate a biblioteca eu tenho instalado aqui: apareceu no terminal " python-dev já é a versão mais nova."

tenho que fazer alguma alteraçao no programa pra compilar?

Igor dos Santos Montagner

unread,
Dec 19, 2015, 6:57:13 PM12/19/15
to Python Brasil
Testei aqui agora e funcionou direto quando compilei no ipython notebook. Você está rodando cython como? A maneira que eu acho mais fácil é rodar no ipython notebook mesmo.

Bruno Bkr

unread,
Dec 20, 2015, 4:56:01 AM12/20/15
to Python Brasil
Bom dia.

Instalei o anaconda completo,pra nao ter erro,mas deu isso aqui:

user@Linux64:~$ cython primos.py
user@Linux64:~$ cython primos.c

Error compiling Cython file:
------------------------------------------------------------
...
/* Generated by Cython 0.23.4 */
^
------------------------------------------------------------

primos.c:1:0: Expected an identifier or literal
user@Linux64:~$

Bruno Bkr

unread,
Dec 20, 2015, 4:57:23 AM12/20/15
to Python Brasil
Se puder postar aqui a compilaçao em .c do meu programa me ajudaria,pois na verdade meu unico interesse e ver o desempenho dele em .c,rsrs

Igor dos Santos Montagner

unread,
Dec 20, 2015, 2:57:02 PM12/20/15
to Python Brasil
Primeiro, deu erro pois Cython não é um interpretador que você passa o código e ele executa. Você primeiro compila algumas funções que precisam ser rápidas em um .pyx, compila isto usando as ferramentas de cython e usa a extensão compilada em um .py que é executado como qualquer outro script em Python. Você pode ver melhor como compilar o .pyx em um extensão em [1]. O programa principal de entrada não fica em um .pyx, você normalmente precisa de 2 arquivos. Além disto, existem outras ferramentas que executam o processo de conversão e compilação automaticamente. Dificilmente chama-se a linha de comando do Cython.

Segundo, se você só quiser testar algo rápido a maneira mais fácil é fazer um ipython notebook e criar duas células. Na primeira você coloca "%load_ext cython" e na segunda você coloca "%%cython" na primeira linha e o seu código embaixo. Roda as duas células que ele vai compilar e executar. Foi isto que eu fiz para executar seu programa.

Boa sorte.

[1] http://docs.cython.org/src/quickstart/build.html
Reply all
Reply to author
Forward
0 new messages