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!
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…
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!
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…)