Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] Uso do multiprocessing no Windows com PyTorch

Olá amigos.

Estou fazendo as aulas utilizando o Python no VsCode no Windows. Ao realizar os testes apresentados na aula, acabei me deparando com um erro no uso do multiprocessing no Windows com PyTorch, que ocorre quando utilizamos o DataLoader com "num_workers" (threads) maior que 0.

Com a ajuda do professor google, acabei descobrindo que o Windows criar execuções recursivas devido à forma como o Python implementa multiprocessing neste sistema operacional, usando spawn em vez de fork. Então precisei proteger o ponto de entrada do código a fim de evitar isso, pois estava gerando erros durante a inicialização dos processos. (An attempt has been made to start a new process before the current process has finished its bootstrapping phase)

Como solução, envolvi o código que inicia a execução do programa dentro de um bloco "if name == 'main':", pra garantir que o código de inicialização fosse executado apenas pelo processo principal e não pelos processos filhos criados pelo DataLoader.

def main():
   #aqui vai o train_set até o for
 
 if __name__ == '__main__':
    main()

Se tiverem outra solução ou entendi errado, manda a dica, ams assim resolveu meu caso... Abraço!

2 respostas
solução!

Olá Ricardo, tudo bem com você?

Obrigado por sempre compartilhar seu raciocínio no fórum e você tem razão, o professor Google é um bom aliado. Ao utilizar o bloco if __name__ == '__main__':, você está garantindo que o código dentro desse bloco seja executado apenas quando o script é executado diretamente, e não quando é importado como um módulo em outro script. Isso evita que o código seja executado novamente quando um novo processo é criado. Sua solução é uma prática comum e recomendada para evitar problemas como o que você encontrou. Caso queira se aprofundar neste assunto, recomendo este artigo da Alura que trata sobre o if__name__.

Continue praticando e conte com a Alura nesta jornada. Abraços e bons estudos!

Olá Felipe! Muito grato pela indicação. Certamente entrará no estudo pois não tinha chegado neste artigo... Vamos em frente.