簡體   English   中英

如何在python中同時運行多個循環函數?

[英]How to run several looping functions at the same time in python?

我一直在從事我被分配做的項目。 它是關於某種停車場的,進入的汽車現在自動(完成)生成,我將它們放入“等待列表”(因為稍后我必須用GUI模塊表示),以便稍后在停車場的一個地點分配的。 然后他們必須離開停車場(也是隨機的)

當我創建一個將始終隨機創建汽車的函數時,問題就出現了,現在我無法調用任何其他函數,因為第一個函數正在循環。

問題是,有沒有一種方法可以同時調用多個循環函數?

謝謝

問題是,有沒有一種方法可以同時調用多個循環函數?

這是一個很大的問題,有幾種方法可以解決。

線程可以讓您的函數並發運行。 線程之間的數據流應使用Queue模塊進行管理:

# Inter-thread communication
wait_to_park = Queue()
wait_to_exit = Queue()

# Start the simulation
tg = threading.Thread(target=generate_cars)
tp = threading.Thread(target=park_cars)
tu = threading.Thread(target=unpark_cars)
tg.start(); tp.start(); tu.start()

# Wait for simumlation to finish
tg.join()
wait_to_park.join()
tp.join()
wait_to_exit.join()
tu.join()

另外,您可以使用事件循環(例如sched模塊)來協調事件。 生成器可能會為此提供幫助-它們像可以暫停和重新啟動的函數一樣工作。

也許導入random ,然后設置一個范圍,您希望某些事件發生?

def mainLoop():
   while True:
      x = random.randrange(1,100)
      if 0>x>10: do something()
      if 10>x>60: do somethingMoreFrequently()
      if 60>x>61: do somethingRarely()

諸如此類

如果您想同時調用多個循環函數,請准備好學習線程。 線程化很困難,除非100%必要,否則我絕不會這樣做。

但這應該足夠簡單,而無需

不要同時具有兩個無限循環,然后在需要時每個都可以工作並返回(或可能產生)。 然后讓您的主事件循環都調用。 像這樣:

def car_arrival():
    if need_to_generate_car:
        # do car generation stuff
    return

def car_departure()
   if time_for_car_to_leave:
       # do car leaving stuff
   return


def event_loop():
    while sim_running:
        car_arrival()
        car_departure()
        sleep(0.5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM