Ответ 1
Используйте python модуль многопроцессорности, который будет работать везде.
Вот статья developerWorks developerWorks, в которой показано, как преобразовать из os.fork() в модуль многопроцессорности.
Как реализовать некоторую логику, которая позволит мне воспроизвести в Windows те функции, которые у меня есть в Linux, с системным вызовом fork()
, используя Python?
Я специально пытаюсь выполнить метод на компоненте SAPI Com, продолжая вторую логику в основном потоке без блокировки или ожидания.
Используйте python модуль многопроцессорности, который будет работать везде.
Вот статья developerWorks developerWorks, в которой показано, как преобразовать из os.fork() в модуль многопроцессорности.
fork()
фактически дублируется в Windows под Cygwin, но он довольно волосатый.
Вызов fork в Cygwin особенно интересен, потому что он плохо отображен поверх Win32 API. Это очень сложно реализовать правильно.
Для описания этого взлома см. Руководство пользователя Cygwin.
Посмотрите на функции управления процессом в os module. Есть функция запуска новых процессов разными способами, как синхронно, так и асинхронно.
Следует также отметить, что Windows не предоставляет функциональные возможности, которые точно аналогичны fork() для других систем. Чтобы выполнить многопроцессорную обработку в Windows, вам нужно будет использовать модуль threading.
В дополнение к коду управления процессом в модуле os, который указал Грег, вы также должны взглянуть на модуль потоковой передачи: 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!"
Пример Threading из Eli будет запускать поток, но не выполнять никакую работу после этой строки.
Я собираюсь изучить модуль обработки и модуль подпроцесса. Я думаю, что метод com, который я запускаю, должен находиться в другом процессе, а не только в другом потоке.
Вам также может понравиться использовать модуль обработки (http://pypi.python.org/pypi/processing). Он имеет множество функций для написания параллельных систем с тем же API, что и модуль потоковой передачи...
Возможно, версия spawn() для python? http://en.wikipedia.org/wiki/Spawn_(operating_system)