2

私は割り当てられたプロジェクトに取り組んでいます。それは、入る車が自動的に生成されるある種の駐車場に関するものです(完了)。後で「待機リスト」に入れました(後でGUIモジュールでそれらを表す必要があるため)。駐車場の一角に配置。そして、彼らは駐車場から出なければなりません(これもランダムに)

常にランダムに車を作成する関数を作成したときに問題が発生しました。最初の関数がループしているため、他の関数を呼び出すことができません。

問題は、複数のループ関数を同時に呼び出す方法があるかどうかです。

ありがとう

4

3 に答える 3

1

問題は、複数のループ関数を同時に呼び出す方法があるかどうかです。

これは素晴らしい質問であり、それを行う方法はいくつかあります。

スレッド化により、関数を同時に実行できます。スレッド間のデータ フローは、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 モジュールなどのイベントループを使用してイベントを調整することもできます。 ジェネレーターはこれに役立つ場合があります。ジェネレーターは、一時停止および再起動できる機能のように機能します。

于 2013-05-10T18:00:58.360 に答える
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% 必要でない限り、私は決してスレッド化を行いません。

しかし、これはなしで達成するのに十分簡単なはずです

于 2013-05-10T17:48:18.917 に答える