Multiprocessamento do Windows
Como eu descobri o Windows é um pouco de porco quando se trata de multiprocessamento e eu tenho uma pergunta sobre isso.
O pydoc afirma que você deveproteger o ponto de entrada de um aplicativo do Windows ao usar multiprocessamento.
Isso significa apenas o código que cria o novo processo?
Por exemplo
Script 1import multiprocessing
def somemethod():
while True:
print 'do stuff'
# this will need protecting
p = multiprocessing.Process(target=somemethod).start()
# this wont
if __name__ == '__main__':
p = multiprocessing.Process(target=somemethod).start()
Neste script você precisa envolver isso sea Principal porque a linha em gerar o processo.Mas e se você tivesse?
Script 2arquivo1.py
import file2
if __name__ == '__main__':
p = Aclass().start()
file2.py
import multiprocessing
ITEM = 0
def method1():
print 'method1'
method1()
class Aclass(multiprocessing.Process):
def __init__(self):
print 'Aclass'
super(Aclass, self).__init__()
def run(self):
print 'stuff'
O que precisaria ser protegido neste caso? O que aconteceria se houvesse um __main__ no Arquivo 2, o código dentro dele seria executado se um processo estivesse sendo criado?
NOTA: Eu sei que o código não irá compilar. É apenas um exemplo.