Сведения о вопросе

Electro Full

08:13, 3rd August, 2020

Теги

python   windows   process   subprocess   fork    

Что это лучший способ, чтобы дублировать fork() в windows?

Просмотров: 503   Ответов: 7

Как мне реализовать некоторую логику, которая позволит мне воспроизвести на Windows функциональность, которую я имею на Linux с системным вызовом fork() , используя Python?

Я специально пытаюсь выполнить метод на компоненте SAPI Com, продолжая другую логику в главном потоке без блокировки или ожидания.



  Сведения об ответе

SILA

00:11, 14th August, 2020

Используйте модуль многопроцессорной обработки python, который будет работать везде.

Вот статья IBM developerWords , которая показывает, как преобразовать из os.fork() в модуль многопроцессорной обработки.


  Сведения об ответе

appple

14:28, 5th August, 2020

fork() фактически был продублирован в Windows, под Cygwin, но он довольно волосатый.

Вызов fork в Cygwin особенно интересен, потому что он плохо отображается поверх Win32 API. Это делает его очень трудным для правильной реализации.

Описание этого взлома смотрите в руководстве пользователя The Cygwin .


  Сведения об ответе

fo_I_K

21:06, 1st October, 2020

В дополнение к коду управления процессами в модуле ОС, который указал Грег, вы также должны взглянуть на модуль потоковой обработки: 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!"


  Сведения об ответе

prince

16:38, 29th August, 2020

Посмотрите на функции управления процессами в модуле os . Существуют функции для запуска новых процессов различными способами, как синхронно, так и асинхронно.

Я должен также отметить, что Windows не обеспечивает функциональность, которая точно такая же, как fork() в других системах. Чтобы выполнить многопроцессорную обработку на Windows,вам нужно будет использовать модуль threading .


  Сведения об ответе

LAST

16:36, 29th August, 2020

Пример потоковой обработки из Eli будет запускать поток, но не выполнять никакой работы после этой строки.

Я собираюсь изучить модуль обработки и модуль подпроцесса. Я думаю, что метод com, который я запускаю, должен быть в другом процессе, а не просто в другом потоке.


  Сведения об ответе

SEEYOU

11:05, 7th August, 2020

Вы также можете использовать модуль обработки (http://pypi.python.org/pypi/processing). Он имеет много функциональных возможностей для написания параллельных систем с тем же API, что и модуль threading...


  Сведения об ответе

park

07:14, 24th August, 2020

Возможно, версия spawn() для python? http://en.wikipedia.org/wiki/Spawn_(operating_system)


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться