Integração Python & Zope

O que poucas pessoas explicam, como ocorre a integração do Zope como(s) sistema(s) operacional(ais) e outros programas? Como sabemos, o Zope foi desenvolvido em Python www.python.org, cujo interpretador de python é nativo/compilado para diversas plataformas (Linux, Windows,MacOs, etc). É por este motivo que o Zope herda e se benifícia desta portabilidade. A visibilidade do Zope sobre o sistema operacional é restrita as APIs do python e ao próprio python, assim tornando o servidor de aplicação mais seguro.

Figure 1: Arquitetura Python & Zope
Image pythonarchitecture

A problemática começa aqui, ou seja, não basta fazermos ajustes no servidor Zope, é importante tornar o seu interpretador mais poderoso.

Os recursos mais comuns quando precisamos de mais poder de processamento são: multi-thread http://www.python.org/doc/2.4/api/threads.html e multi-cpu. O python nasceu com multi-thread, porém não com multi-cpu. Isto tem um preço quando a performace é requisito. Na prática quando executamos o Zope, zope.conf padrão, verificamos que é criado 4 threads sob o controle de um único processo python, controlado pelo Global interpreter lock ou GIL http://www.python.org/moin/PythonGlossary. Em um ambiente multi-cpu o GIL restringe a cada thread utilizar a mesma área de memória Zope/python, não tirando proveito do multi-processamento.

Figure 2: Intel - Hyper-Threading Technology
Image intelht

O lock usado pelo Python assegurar que somente uma thread pode ser executada em um dado momento. Isto simplifica o gerenciamento de theads do Python, assegurando que nenhum dos dois processos possam acessar o mesmo endereço de memória ao mesmo tempo. O que justifica restringir o interpretador para tornar o ambiente multi-threads, contudo não deixa de utilizar o paralelismo de máquinas com multi-processadores. Na história do python tentou-se desenvolver um "free-thread", porém a performace em ambiente uni-processo foi muito baixa.

krishna 2005-09-16