2017-04-10 23 views
1

我目前在用Python寫的一些服務器代碼的過程中,我有開始一個無限循環的方法來服務請求,即:是否可以發送中斷/停止信號的方法?

class s: 
    def serve(self): 
     while True: 
      # do stuff 

當我把這個代碼,我做這樣的事情:

a = s() 
a.serve() 

我的問題是 - 有沒有辦法將消息發送到「服務」,從外部方法破壞循環。我不想簡單地殺死程序。非常感謝。我想過的

一種選擇是不是:

while True: 
    // do something 

可以這樣做:

while self.serving: # and then update self.serving as appropriate 

,不過也許有一個更好的解決方案。

回答

1

是的,這是可能的:

class Server: 

    def __init__(): 
     self.alive = True 

    def serve(self): 
     while self.alive: 
      # do stuff 

    def die(): 
     self.alive = False 

現在只需撥打die()的線程之外運行serve(..)

srv = Server() 
thread = Thread(target=srv.serve) 
thread.start() 
time.sleep(some_time) # or do something else. 
srv.die() # or do this from some outside process. 
+0

酷是啊,這是我的想法,這是最有意義的。謝謝! – DarkPurple141

0

我不明白究竟你想要做什麼,但你可以有一個簡單的標誌,而不是:

while True: 

它可能是

example = True 
while example: 

然後例如設置爲false時你想結束循環。

+0

爲了澄清;我想從該方法之外將信號發送到該方法。所以,s.stop()需要作出s.start()的迴路斷線。但可能是的,對象訪問paramater是要走的路。 – DarkPurple141

相關問題