Запуск python 2.7 на windows 7 (64 бит).многопроцессор python для окон, если __name__ == "__main__"
При чтении документации для модуля multiprocessing
библиотеки, он утверждает, несколько раз важности __main__
модуля, включая условные (особенно в Windows):
if __name__ == "__main__":
# create Process() here
Моего понимание, что вы не хотите для создания экземпляров Process() в глобальном пространстве имен модуля (потому что, когда дочерний процесс импортирует модуль, он будет непредсказуем еще один случайный случай).
Мне не нужно размещать диспетчеры процессов на самом верхнем уровне иерархии выполнения пакета (выполнение в PARENT). Пока мой Process() создается, управляется и завершается методом класса или даже при закрытии функции. Просто не в пространстве имен модулей верхнего уровня.
Я правильно понимаю это предупреждение/требование?
EDIT
После первых двух ответов, я добавить эту цитату. Это во введении для Раздел 16.6 многопроцессорная обработка из 2.7 документов.
Примечание: Функциональность в пределах этого пакета требует, чтобы
__main__
модуля будет ввозом детьми. Это описано в программировании принципы однако стоит отметить, here.This означает, что некоторые примеры, такие какmultiprocessing.Pool
примеры не будут работать в интерактивный интерпретатор ...
Педантичное примечание: переменные в 'if __name__ == '__main __':' все еще находятся в ** пространстве имен ** модуля, когда код действительно выполняется.Однако код не выполняется, когда модуль импортируется. (I.e. Я считаю, что если вы импортируете основной модуль программы, вы можете извлекать переменные из своего основного блока в качестве атрибутов модуля.) – millimoose
Так что переменные @millimoose, созданные внутри 'if', доступны для всех порожденных процессов на компьютере Windows, правильно? Даже если они не были объявлены за пределами 'if'? – Kartik
@ Kartik - Я не уверен, что понимаю вопрос, прошло уже три года. Я думаю, они будут доступны, но их ценности будут поддельными. Я предлагаю вам написать некоторый тестовый код, чтобы узнать, что вы имеете в виду, и опубликовать новый вопрос о SO, если у вас есть какие-то конкретные проблемы с ним. – millimoose