2014-03-18 52 views
0

因此,這裏是我的代碼,因爲它可能會更有意義比我的問題:創建循環的一個類方法會在python中停止另一個方法嗎?

class Actuator: 

    current = 50 

    def __init__(self, pin_out): 
     #do initialization stuff 
    def actuatorOut(): 
     while self.current <=99: 
      self.current += 1 
      pwm_library_method(pin=pin_out,actuator_distance=self.current) 
    def actuatorIn(): 
     while self.current >=1: 
      self.current-=1 
      pwm_library_method(pin=pin_out,actuator_distance=self.current) 

現在我想知道,如果我叫Actuator.actuatorOut()然後調用Actuator.In(),將Actuator.In ()打破第一個方法調用的循環?如果不是,這是如何完成的?

+0

直到循環結束,* nothing纔會發生,因爲該函數不會將控制權返回給調用方以調用其他任何內容。 – jonrsharpe

+0

擴展@jonrsharpe的評論,如果你有兩個線程戳同一個方法,他們理論上會導致兩個不返回,因爲一個會加,另一個減,然後你也沒有鎖來防止關鍵部分(結果分配的地方),所以你的代碼基本上不會做你認爲你想做的事情。 – metatoaster

+0

爲什麼在這些方法中使用循環?淡入/淡出,平穩過渡? –

回答

0

我假設你想讓這兩種方法同時運行。您將使用threading,然後使用共享數據結構,如Queue

+0

謝謝你,這似乎是我正在尋找的答案。 –

+0

讀完你的背景信息後,你可能不想這樣做。如果您只有一個執行器,因此只能在同一時間上升或下降,那麼您應該只需要一種根據條件調入或調出的方法。你可能甚至可以簡化其中的每一個,而不是一會兒,然後一個主控制循環決定每個循環。 –

相關問題