Como usar o PyPy?

222 views
Skip to first unread message

erickson...@dce.ufpb.br

unread,
Jan 29, 2014, 8:09:23 AM1/29/14
to python...@googlegroups.com
Olá pessoal, bom dia.
Estou trabalhando num projeto desenvolvido em C++, que usa um módulo desenvolvido em Python.
Está rodando normalmente, mas estou achando a execução muita lenta. Pois é carregado vários e blá blá blá.
Fiz uma pesquisa e encontrei o PyPy, que promete melhor o desempenho. 

Fiz o download do source, e dei um make. 
E agora? Como exatamente que eu faço para ser executado o PyPy na chamada C++ > Python?

Aqui é compilado através de um makefile, usando a lib -lpython2.7 e -I /usr/include/python2.7.



Desde já obrigado.
Abraços,

Vinicius Assef

unread,
Jan 29, 2014, 6:22:03 PM1/29/14
to python...@googlegroups.com
http://stackoverflow.com/questions/16595337/run-python-script-in-pypy

2014-01-29 <erickson...@dce.ufpb.br>:
> --
> --
> ------------------------------------
> 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ê está recebendo esta mensagem porque se inscreveu no grupo "Python
> Brasil" dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para python-brasi...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

José Ricardo Borba

unread,
Jan 29, 2014, 8:48:05 PM1/29/14
to python...@googlegroups.com
Posto que Python é mais lento que C++, está tudo certo, não?
Se velocidade for um requisito importante para você, então reescreva
os módulos em C/C++. Ou tente utilizar um compilador LLVM para Python,
como o Numba[1].
O certo é que, após gerar os .pyc tudo fica "um pouco" mais rápido.
Mas não existe mágica.

[1] - http://numba.pydata.org/

Abraço,

Valder Gallo

unread,
Jan 30, 2014, 5:06:40 AM1/30/14
to python...@googlegroups.com
+1  José Ricardo Borba



2014-01-29 José Ricardo Borba <jrbor...@ig.com.br>



--
Valder Gallo
+55 11 9949 2911
+55 11 2532 2911
Skype: valdergallo
@valdergallo

Joao S. O. Bueno

unread,
Feb 4, 2014, 5:45:24 AM2/4/14
to Python Brasil
Oi Ericson -
se o seu projeto está incorporando as bibliotecas do Python, usando o
de forma "embedded", para chamar
funções de Python dentro do próprio processo, não há como fazer uma
subsittuição direta pelo Pypy.

A interface direta com as linguagens C e C++ é uma característica do
CPython - a implementação de referência do Python. Essa interface com
C e código nativo funciona de forma diferente em outras
implementações.

Se você deseja otimizar a parte que está escrita em Python ai, sem
perder a compatibilidade, o negócio é usar o "CYTHON" - Cython é um
super-conjunto da linguagem Python, que compila o código Python parar
arquivos intermediários em C. Dependendo do código você pode terum
ganho de 10-30% só trocando Python interpretado pelo Cython - mas não
faz grande mágica desse jeito. O que ele permite é espcificar,
seletivamente, algumas
variáveis e funções que serão de tipagem "estática" e com valores
nativos, dentro do código Pythonico. Assim, uma variável de contador,
acessada muitas vezes num loop apertado deixa de ser um "objeto int de
Python", que permite intropecção e número ilimitado de dígitos, e
passa a ser um inteiro nativo de CPU, de 32 ou 64 bits, que ficará
confortavelmente acomodado no cache mais interno da CPU durante a
execução do loop.

O interessante dessa abordagem é que você não vai precisar mudar nada
no seu código C que chama as funções em Python - só vai precisar
alterar o "makefile" ou "setup.py" e mudar seus arquivos .py para
.pyx, e ir otmizando-os gradualmente. (Não deixe de procurar dicas
sobre profiling também, para não perder tempo otimizando o que não tem
importância - alias, faça isso mesmo antes de começar a usar o
Cython).

A página do projeto está aqui:
http://cython.org/


2014-01-29 <erickson...@dce.ufpb.br>:

Leonardo Tada

unread,
Feb 20, 2014, 12:26:24 PM2/20/14
to python...@googlegroups.com
Na chamada do do Python no seu codigo C++ troque para os arquivos do PyPy, ou melhor ainda use o Cython para compilar o modulo de Python em uma DLL, e chamá-la através do C++.
Reply all
Reply to author
Forward
0 new messages