![](/img/trans.png)
[英]Python: how to run several scripts (or functions) at the same time under windows 7 multicore processor 64bit
[英]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.