메인에서 프로세스를 시작한 다음 def 함수에서 종료하는 방법을 알고 싶습니다. 필자는 관심있는 애플리케이션을 실행하는 프로세스를 가지고있다. Tkinter를 사용하여 버튼을 기다리는 간단한 GUI를 실행하는 프로세스가있다. 이 버튼을 누르면 프로세스가 종료되기를 원합니다. 예를 들면 : 나는이 작업을 수행 할 때Python - 메인에서 시작된 프로세스 종료
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()
, 그것은 나에게 오류 제공 : AttributeError: 'NoneType' object has no attribute 'terminate'
을하지만 난 main
에 종료하려고 할 때, 그것을 작동합니다. 그러나 그것은 내가 원하는 것이 아닙니다. 분명한 것은, 메인에서 프로세스를 시작한 다음 버튼을 누르면 프로세스를 끝내야한다는 것입니다.
어떻게'AttributeError'를 얻을지 모르겠다. 'NameError'를 얻었어야합니다. 왜냐하면'p1'은'buttonCallBack'이 볼 수있는 곳에서 정의되지 않았기 때문입니다. 당신의 모범에서 빠진 것이 있습니까? –
나는 그렇게 생각하지 않는다. 관련 코드를 모두 포함 시켰습니다. 이상하게도, buttonCallBack 함수에 main에 넣은 코드를 넣으면 종료합니다 ... 작동합니다. 그것은 함수에서 그것을 끝낼 수있는 함수에서 프로세스를 시작해야 할 것으로 보인다. 그러나 그것은 내가 원하는 것이 아닙니다. – BBEng
'p1'의 값을 다시 할당 하시겠습니까? –