Ich möchte wissen, wie man einen Prozess in Haupt starten Sie dann in einer Def-Funktion beenden. In meinem Code habe ich einen Prozess, der eine Anwendung von Interesse ausführt, dann einen anderen Prozess, der eine einfache GUI unter Verwendung von Tkinter ausführt, die darauf wartet, dass ein Buton gedrückt wird. Wenn diese Schaltfläche gedrückt wird, möchte ich, dass die Prozesse beendet werden. Zum Beispiel:Python - Beende einen Prozess gestartet in Haupt
def pro_a():
#Runs the application
def pro_b():
root.mainloop() # Runs the GUI
def buttonCallBack()
#I want to terminate the processes here
#I've tried doing: p1.terminate()
b = Button(frame, .........., command = buttonCallBack)
b.place(......)
if __name__ == '__main__':
p1 = Process(target=pro_b)
p2 = Process(target=pro_a)
p1.start()
p2.start()
Wenn ich versuche, dies zu tun, es gibt mir den Fehler: AttributeError: 'NoneType' object has no attribute 'terminate'
aber wenn ich versuche, es zu beenden, in main
, es funktioniert. Aber das will ich nicht. Um klar zu sein, muss ich die Prozesse in main starten und sie dann beenden, sobald die Schaltfläche gedrückt wird.
Ich sehe nicht, wie Sie den 'AttributeError' bekommen würden. Sie sollten einen 'NameError' erhalten, da' p1' nicht irgendwo definiert ist, dass 'buttonCallBack' es sehen kann. Fehlt Ihrem Beispiel etwas? –
Ich glaube nicht. Ich habe jedes Bit des relevanten Codes eingeschlossen. Das Seltsame ist, wenn ich denselben Code, den ich in main eingegeben habe, in die buttonCallBack-Funktion einfüge, dann versuche zu beenden ... es funktioniert. Es scheint, dass ich den Prozess in der Funktion starten muss, um es in der Funktion beenden zu können. Aber das will ich nicht. – BBEng
Haben Sie den Wert von 'p1' neu zugewiesen? –