Exécution à partir de Visual Studio> Application console Python ... Le système d'exploitation est Windows 10.

Le code simple ci-dessous ne fonctionne pas. La fenêtre reste ouverte pendant quelques secondes, puis se ferme sans rien imprimer sur la fenêtre.

Aidez-moi à résoudre ce problème. Cela a été déroutant et comme je l'ai lu sur Internet, beaucoup de gens l'ont signalé, mais j'apprécie vraiment que vous me fournissiez une solution qui puisse fonctionner sur mon environnement. Merci.

import multiprocessing
import sys
import os

def foo():
    print('hello')

if __name__ == '__main__':
    multiprocessing.freeze_support()
    multiprocessing.set_executable(os.path.join(sys.exec_prefix, 'pythonw.exe'))

    p = multiprocessing.Process(target=foo)
    p.start()
1
GreenBinary 18 avril 2020 à 19:44

2 réponses

Meilleure réponse

Y a-t-il une raison d'utiliser la fonction "set_executable"? Essayez de regarder la valeur de sys.executable est-elle différente de l'interpréteur que vous aimeriez utiliser? si c'est le cas, quel est le chemin de l'exécutable que vous souhaitez utiliser?

Essayez de l'exécuter dans la cmd à l'aide de la commande suivante python <path_to_script.py>

import multiprocessing
import sys
import os

def foo():
    print('hello')

if __name__ == '__main__':
    #multiprocessing.freeze_support()
    #multiprocessing.set_executable(os.path.join(sys.exec_prefix, 'pythonw.exe'))

    p = multiprocessing.Process(target=foo)
    p.start()
0
user3467955 18 avril 2020 à 18:12

pythonw.exe est une fenêtre GUI, pas une console. Où espérez-vous voir le "bonjour" que vous avez imprimé? Si vous voulez vous assurer que le code d'un autre processus est réellement exécuté, écrivez "bonjour" dans un fichier ou ouvrez une fenêtre:

from tkinter import Tk

def foo():
    print('hello')
    t = Tk()
    t.mainloop()

Ou

from pathlib import Path

def foo():
    Path("some_file.txt").write_text("hello")

Appelez également p.join() à la fin pour attendre la fin du processus.

0
Noah Broyles 18 avril 2020 à 16:59