Integração Python e C++

480 views
Skip to first unread message

Fernando Pimenta

unread,
Feb 13, 2013, 8:18:58 PM2/13/13
to python...@googlegroups.com
Olá pessoal!

Qual a melhor interface, framework, programa para integrar Python e C++?
No meu caso quero desenvolver um software com interface gráfica em pyQT algumas funções em Python (plotar gráficos por exemplo). As funções que demandam mais desenpenho vou fazer em C++.

Leonardo Santagada

unread,
Feb 13, 2013, 9:20:33 PM2/13/13
to python...@googlegroups.com

2013/2/13 Fernando Pimenta <fernand...@gmail.com>

Qual a melhor interface, framework, programa para integrar Python e C++?
No meu caso quero desenvolver um software com interface gráfica em pyQT algumas funções em Python (plotar gráficos por exemplo). As funções que demandam mais desenpenho vou fazer em C++.

o pyqt usa uma ferramenta chamada sip, ela integra bem com o qt... talvez seja a melhor. Tem o boost.python e o ROOT (http://root.cern.ch/drupal/ esse é dificil de googlear) para c++ e em parte o cython também tem suporte a coisas de c++. Se C do c++ é suficiente para o que tu quer fazer eu realmente recomendo o CFFI criado pelo armin rigo, ele se integra hoje com o ctypes no cpython e funciona no pypy. Falando nisso, antes de fazer algo em c++ eu faria no pypy primeiro e só se ficar lento eu moveria o código para c++.

--

Leonardo Santagada

Ivan lopes

unread,
Feb 13, 2013, 9:39:35 PM2/13/13
to python...@googlegroups.com
use o swig - http://www.swig.org
é a melhor alternativa para integração.



2013/2/13 Fernando Pimenta <fernand...@gmail.com>
Olá pessoal!

Qual a melhor interface, framework, programa para integrar Python e C++?
No meu caso quero desenvolver um software com interface gráfica em pyQT algumas funções em Python (plotar gráficos por exemplo). As funções que demandam mais desenpenho vou fazer em C++.

--
--
------------------------------------
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.
 
 

Antonio Ribeiro

unread,
Feb 14, 2013, 4:15:04 AM2/14/13
to python...@googlegroups.com
Eu tenho trabalhado com integração de C++ (e as vezes C) com Python nos últimos meses. A maioria dos códigos que eu tenho em produção são escritos ou em Swig[1] ou em Boost::Python[2].

Ambas soluções são bacanas quando você tem um código que irá crescer constantemente, pois é muito fácil criar uma nova camada e ir adicionando componentes no seu código. Mas tem um porém nessas soluções: você ta enfiando dependência no seu projeto que não é tão direto de instalar, isso pode te dar dor de cabeça com os usuários.

Um exemplo que acontece aqui comigo é: muitos usuários do nosso framework não são programadores, mas sim físicos e engenheiros que usam o framework para desenvolver modelos. Por mais boa vontade que esses caras tenham, vira e mexe aparece um que não consegui instalar o Swig, ou que tem problema compilando Boost... Aí até conseguirmos dar suporte o cara perde meio dia de trabalho. Então isso é uma variável que você tem que por na balança: quem vai usar o seu código vai precisar compilá-lo? Se sim, esse tipo de usuário consegue se virar sozinho? 

Atualmente eu estou portando o maior projeto daqui de Boost para usar a API padrão do Python[3] e Cython (em camadas diferentes). O core do framework, que é um código bem compacto e sólido, eu estou escrevendo usando a API padrão do Python. Motivo: é um código super compact, que não vai ficar crescendo exponencialmente ao longo do tempo, então eu não preciso me preocupar tanto com manutenção, escalabilidade de implementação, esses trens.

Já as bibliotecas do usuário eu estou escrevendo em Cython[4], por uma série de motivos: 1- a quantidade de componentes da minha bibliteca cresce ao longo do tempo, então fica complicado usar a API padrão. 2 - O usuário pode criar sua própria biblioteca de componente baseado em alguns "templates", apenas preenchendo métodos de componentes vazios. Usando Cython o cara pode fazer isso escrevendo código Python mesmo, não precisa se preocupar com C ou C++, a menos que ele queira. 3 - O usuário pode quere criar uma biblioteca e compilar para C, apenas com o intuito de proteger o código fonte do seu componente (sim, dá pra descompilar isso, mas dá mais trabalho).

No mais, se o seu foco for desempenho, vale a pena tentar o Pypy[5]. Se você usa muitas operações mateáticas, tenta a versão de Numpy e SciPy compilada diretamente para Cython[6], ela é bem mais rápida que a versão original da Numpy, se usada corretamente.





--
Atenciosamente,
Antonio Ribeiro

Skype: alvesjnr

Fernando Pimenta

unread,
Feb 17, 2013, 2:43:16 PM2/17/13
to python...@googlegroups.com
Obrigado pelas respostas pessoal!!!!!!!!!!!
Fernando Martins Pimenta
Bacharel em Engenharia de Biossistemas
Universidade Federal de São João del-Rei
Campus Sete Lagoas - MG

Fábio Barrionuevo

unread,
Feb 17, 2013, 3:11:42 PM2/17/13
to python...@googlegroups.com
Fernando, agradeceria se você postasse suas experiencias, seja aqui ou num blog.
Ja que sobre esse assunto especifico não ha muitos matérias em português.
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul
Reply all
Reply to author
Forward
0 new messages