Parallel Python

Embora seu computador possa ter dois, quatro, oito ou até dezesseis núcleos de processamento, o Python só usa um deles de cada vez (mesmo trabalhando com threads). Parallel Python resolve o problema. Um exemplo simples, para você entender como funciona:

ppserver = pp.Server(ppservers=())
job1 = ppserver.submit(funcao_demorada, (), (), ())
job2 = ppserver.submit(funcao_demorada, (), (), ())
print job1()+job2()

Os quatro argumentos do método submit são: a função que será executada, os argumentos passados a ela, as funções que ele pode chamar e os módulos dos quais ela depende. Veja um exemplo de como chamar com esses parâmetros:

ppserver = pp.Server(ppservers=())
job1 = ppserver.submit(funcao_demorada, (44,), 
                        (sub_funcao,), ("sys","math",))
job2 = ppserver.submit(funcao_demorada, (25,),
                        (sub_funcao,), ("sys","math",))
print job1()+job2()

Divirta-se!


3 respostas para “Parallel Python”

  1. Avatar de Sérgio Berlotto Jr

    Olá Élcio !
    Muito bom seu blog !
    Eu também sou um dos que não sabia que o Python não utilizava SMP no seu processamento, mesmo que trabalhando com Threads !
    Obrigado pela dica…

  2. Avatar de Alisson Patrício

    Muito bom Elcio, Obrigado pela dica.
    Tinha notado essa limitação das threads no Python, então eu comecei a usar a biblioteca multiprocessing – se não me engano introduzido no Python 2.6.
    Nas aplicações que fiz os processos tomaram conta dos 4 núcleos do processador, porem usei apenas o htop para ver o consumo da CPU, não fui a fundo para verificar em qual núcleo o processo estava rodando pois me parecia funcionar perfeitamente.

    Já chegou a usar a biblioteca multiprocessing? Ela realmente não faz uso dos núcleos como deveria?

    Abraços e Muito Obrigado!

  3. Avatar de Felipe S. Gomes

    Interessante. Eu não sabia que o python não usava multithread.

    Você sabe indicar cases que usam o Parallel Python? (não encontrei nenhum case no site do projeto…)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *