Qual é a melhor maneira de duplicar fork () no Windows?

votos
22

Como faço para implementar alguma lógica que permita-me a reproduzir no Windows a funcionalidade que eu tenho no Linux com a fork()chamada de sistema, usando Python?

Eu estou tentando especificamente para executar um método no componente SAPI Com, continuando a outra lógica no segmento principal sem bloquear ou à espera.

Publicado 22/08/2008 em 21:27
fonte usuário
Em outras línguas...                            


7 respostas

votos
17

Use o python módulo de multiprocessamento que irá funcionar em todos os lugares.

Aqui está um artigo da IBM developerWords que mostra como converter de os.fork () para o módulo de multiprocessamento.

Respondeu 16/05/2011 em 17:51
fonte usuário

votos
10

fork() tem de facto sido duplicado no Windows, sob Cygwin , mas é muito peludo.

A chamada fork em Cygwin é particularmente interessante porque não mapear bem em cima da API Win32. Isto torna muito difícil de implementar corretamente.

Consulte o Guia do Usuário O Cygwin para uma descrição desse hack.

Respondeu 04/10/2008 em 15:10
fonte usuário

votos
3

O exemplo de Threading de Eli será executado o segmento, mas não fazer qualquer trabalho após essa linha.

Vou olhar para o módulo de processamento e o módulo de subprocesso. Eu acho que o método com que eu estou correndo precisa estar em outro processo, e não apenas em outro segmento.

Respondeu 09/09/2008 em 16:37
fonte usuário

votos
3

Além do código de gerenciamento de processo no módulo os que Greg apontou, você também deve dar uma olhada no módulo de segmentação: https://docs.python.org/library/threading.html

from threading import Thread

def separate_computations(x, y):
    print sum(x for i in range(y))  # really expensive multiplication

Thread(target=separate_compuations, args=[57, 83]).start()
print "I'm continuing while that other function runs in another thread!"
Respondeu 22/08/2008 em 22:16
fonte usuário

votos
3

Ter um olhar para as funções de gerenciamento de processo no módulo os . Existem função para iniciar novos processos de muitas maneiras diferentes, tanto de forma síncrona e assíncrona.

Devo observar também que o Windows não fornece funcionalidade que é exatamente como fork () em outros sistemas. Para fazer multiprocessamento no Windows, você precisará usar a segmentação módulo.

Respondeu 22/08/2008 em 21:38
fonte usuário

votos
2

Também recomendamos a utilização do módulo de processamento ( http://pypi.python.org/pypi/processing ). Tem o lote de funcionalidade para escrever sistemas paralelos com a mesma API que o módulo de threading ...

Respondeu 24/08/2008 em 16:38
fonte usuário

votos
0

Possivelmente uma versão de desova () para python? http://en.wikipedia.org/wiki/Spawn_(operating_system)

Respondeu 22/08/2008 em 21:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more