Utilizando Shared Objects no Python

Utilizando Shared Objects no Python

31/08/2015 Marcos Paulo de Souza 1 min de leitura

Python é realmente uma linguagem muito versátil, tendo a mão quase sempre tudo o que se precisa fazer. Então, a algum tempo atrás eu precisava verificar a possibilidade de carregar um Shared Object com o Python, e eis que encontrei. A documentação do Python é realmente muito útil, com exemplos de utilização de módulos, inclusive do módulo em questão.

Para poder carregar a lib, eu utilizei o módulo ctypes. Este módulo provê tipos de dados compatíveis com o C e permite chamar bibliotecas, como DDLs e shared objects. Para iniciar o exemplo, eu criei uma lib, na verdade um shared object, a seguir:

Para compliar esta lib basta executar: gcc -Wall minha_lib.c -shared -fPIC -o /tmp/minha_lib.so Como mostra o fonte, esta lib terá 3 funções bem simples: somar, incremento e criação de um arquivo. A lib compilada será colocada no /tmp para não ter problemas com pessoas executando o código em diferentes máquinas. Segue abaixo o código Python que fará uso desta nova biblioteca que acabamos de compilar:

Explicação do código: A função CDLL carrega a lib especificada como parâmetro e retorna um objeto com os mesmos métodos que existem dentro da biblioteca do parâmetro. Após carregar a lib, podemos utilizar as funções como se fossem métodos do Python.

Este exemplo mostrou como interagir com Shared Objects, mas interagir com DLLs é igualmente fácil. Na documentação oficial do ctypes é mostrado como fazer esta integração.

Espero que tenham gostado deste artigo, que mostra de mostra bem simples como interagir com shared objects. Até a próxima!

Referência: cytpes