¿Por qué el módulo de multiprocesamiento de Python importa __main__ cuando se inicia un nuevo proceso en Windows?

Estoy jugando con una biblioteca para mis estudiantes principiantes, y estoy usando el módulo de multiprocesamiento en Python. Me encontré con este problema:importar y usar un módulo que usa multiprocesamiento sin causar un bucle infinito en Windows

Como ejemplo, supongamos que tengo un módulomylibrary.py:

# mylibrary.py

from multiprocessing import Process

class MyProcess(Process):
    def run(self):
        print "Hello from the new process"

def foo():
    p = MyProcess()
    p.start()

Y un programa principal que llama a esta biblioteca:

# main.py

import mylibrary

mylibrary.foo()

Si corromain.py en Windows, intenta importar main.py al nuevo proceso, lo que significa que el código se ejecuta de nuevo, lo que da como resultado un ciclo infinito de generación de procesos. Puedo arreglarlo así:

import mylibrary

if __name__ == "__main__":
    mylibrary.foo()

Pero, esto es bastante confuso para los principiantes, y además parece que no debería ser necesario. El nuevo proceso se está creando enmylibraryEntonces, ¿por qué el nuevo proceso simplemente no importa?mylibrary? ¿Hay una manera de solucionar este problema sin tener que cambiarmain.py?

Estoy usando Python 2.7, por cierto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta