Executando métodos em diferentes núcleos em python
Pergunta
Existe alguma maneira fácil de fazer 2 métodos, digamos MethodA () e MethodB () executado em 2 núcleos diferentes? Não me refiro a 2 fios diferentes. Estou executando no Windows, mas eu gostaria de saber se é possível ser independente de plataforma.
edit: E o que dizer
http://docs.python.org/dev/library/multiprocessing.html e paralelo python ?
Solução
Você tem que usar processos separados (por causa do GIL frequentemente mencionados). A multiprocessamento módulo está aqui para ajuda.
from multiprocessing import Process
from somewhere import A, B
if __name__ == '__main__':
procs = [ Process(target=t) for t in (A,B) ]
for p in procs:
p.start()
for p in procs:
p.join()
Outras dicas
Assumindo que você usar CPython (a implementação de referência) a resposta é NÃO por causa do global Interpreter Bloqueio . Em CPython tópicos são usados ??principalmente quando há muito IO para fazer (um thread espera, outro faz a computação).
Em geral, executando diferentes tópicos é a melhor maneira portátil para rodar em múltiplos núcleos. Claro que, em Python, o bloqueio intérprete mundial torna este um ponto discutível - apenas um segmento vai fazer progressos em um momento
.