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

如何在python中同时运行多个循环函数?,python,function,loops,while-loop,Python,Function,Loops,While Loop,我一直在做一个我被指派去做的项目。这是一个停车场,进入的车辆现在自动生成(完成),我将它们放入“等待列表”(因为我以后必须用GUI模块表示它们),以便以后分配到停车场的某个位置。然后他们必须离开停车场(也是随机的) 当我创建一个总是随机创建汽车的函数时,问题就出现了,现在我不能调用任何其他函数,因为第一个函数是循环函数 问题是,有没有一种方法可以同时调用多个循环函数 谢谢也许导入随机,然后设置一个您希望某些事件发生的范围 def mainLoop(): while True:

我一直在做一个我被指派去做的项目。这是一个停车场,进入的车辆现在自动生成(完成),我将它们放入“等待列表”(因为我以后必须用GUI模块表示它们),以便以后分配到停车场的某个位置。然后他们必须离开停车场(也是随机的)

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

问题是,有没有一种方法可以同时调用多个循环函数


谢谢

也许导入
随机
,然后设置一个您希望某些事件发生的范围

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)
问题是,有没有一种方法可以同时调用多个循环函数

这是一个很好的问题,有几种方法可以解决

可以让您的函数同时运行。线程之间的数据流应使用以下方法进行管理:


或者,可以使用事件循环(如)来协调事件。这可能会有所帮助——它们的工作方式类似于可以挂起和重新启动的函数。

尝试使用线程模块。但是要当心GIL,除非整个模拟是CPU限制的,否则没有特别的理由“当心GIL”。在大多数情况下,线程非常适合模拟停车场问题。谢谢你的回答,雷蒙德!自从我想学习如何使用这个线程模块以来,我一直在努力解决这个问题。在您建议作为示例的代码中,wait_to_park、wait_to_exit、generate_cars等都是预先声明的函数,对吗?谢谢!我想我会尝试一下。问题是,如果随机设置下一辆车未来的小时数的函数恰好在0秒内创建下一辆车,并且如果整个while循环到那时还没有完成,程序将永远不会最终创建该车。不过,我想我可以解决这个特殊的情况:)谢谢!
# 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()