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!