如何在python中同时运行几个循环函数?

时间:2013-05-10 17:38:45

标签: python function loops while-loop

我一直致力于一个我被指派去做的项目。它是关于某种停车场,进入的汽车,现在自动生成(完成),我把它们放入'等待列表(因为我必须稍后用GUI模块代表它们)以便以后在停车场的一个地点分配。然后他们必须离开停车场(也随机)

当我创建一个随机创建汽车的函数时,问题就出现了,现在我无法调用任何其他函数,因为第一个函数正在循环。

问题是,有没有办法同时调用多个循环函数?

由于

3 个答案:

答案 0 :(得分:1)

  

问题是,有没有办法同时调用多个循环函数?

这是一个很好的问题,有几种方法可以做到。

Threading可以让您的函数同时运行。应使用Queue module

管理线程之间的数据流
# 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 module)来协调事件。 Generators可能对此有所帮助 - 它们的工作方式类似于可以暂停和重新启动的功能。

答案 1 :(得分:0)

可能导入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%必要,否则我永远不会这样做。

但这应该足够简单,无需

答案 2 :(得分:0)

不要两者都无限循环,然后每个都需要工作并返回(或可能产生)。然后让你的主事件循环调用两者。像这样:

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)