Oui. Les travaux suivants dans cette fonction f
sont exécutés dans un processus séparé (troisième).
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
Cependant, pour voir la sortie print
, au moins sous Windows, il faut commencer IDLE partir d'une console comme ceci.
C:\Users\Terry>python -m idlelib
hello bob
(utilisation idlelib.idle
sur 2.x) La raison en est que IDLE exécute le code d'utilisateur dans un processus séparé. Actuellement, la connexion entre le processus IDLE et le processus de code utilisateur se fait via une socket. La fourche effectuée par multiprocessing ne duplique pas ou n'hérite pas de la connexion socket. Lorsque IDLE est démarré via une icône ou un explorateur (sous Windows), il n'y a pas d'endroit où la sortie d'impression doit se rendre. Lorsqu'elle est démarrée à partir d'une console avec python
(plutôt que pythonw
), la sortie va à la console, comme ci-dessus.
@MathBio J'ai dupe fermé l'autre avec ça. La réponse sur ce post est par le dev de Python IDLE et est donc beaucoup plus supérieure. –