thread parallel python windows process subprocess fork

python - parallel - ¿Cuál es la mejor manera de duplicar fork() en Windows?



python pool thread (7)

¿Cómo implemento alguna lógica que me permita reproducir en Windows la funcionalidad que tengo en Linux con la llamada al sistema fork() , usando Python?

Estoy intentando específicamente ejecutar un método en el componente SAPI Com, mientras continúo la otra lógica en el hilo principal sin bloquear o esperar.


Eche un vistazo a las funciones de gestión de procesos en el módulo os . Hay funciones para iniciar nuevos procesos de muchas formas diferentes, tanto sincrónicamente como asíncronamente.

También debo señalar que Windows no proporciona una funcionalidad que sea exactamente como fork () en otros sistemas. Para hacer multiprocesamiento en Windows, deberá usar el módulo de subprocesamiento .



También puede utilizar el módulo de procesamiento ( http://pypi.python.org/pypi/processing ). Tiene mucha funcionalidad para escribir sistemas paralelos con la misma API que el módulo de roscado ...


El ejemplo de Threading de Eli ejecutará el hilo, pero no hará nada del trabajo después de esa línea.

Voy a ver el módulo de procesamiento y el módulo de subproceso. Creo que el método com que estoy ejecutando debe estar en otro proceso, no solo en otro hilo.



fork() ha sido duplicado en Windows, bajo Cygwin , pero es bastante peludo.

La llamada a la horquilla en Cygwin es particularmente interesante porque no se correlaciona bien con la API de Win32. Esto hace que sea muy difícil de implementar correctamente.

Consulte la Guía del usuario de The Cygwin para obtener una descripción de este truco.


Además del código de gestión de procesos en el módulo os que Greg señaló, también debería echar un vistazo al módulo de subprocesos: 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!"