0

だから私は根本的に何か間違ったことをしていると思いますが、ここに私がしていることの基本的な例があります

some variables here
some code here to run once

def runfirst():
    do some stuff
    runsecond()
def runsecond():
    do some different stuff
    runthird():
def runthird():
    do some more stuff
    runfirst():
runfirst()

したがって、基本的には、最初に必要な情報を取得してから、3 つの異なる変数を実行します。私がやっていることは、データベースから情報を取得してから、データベースでいくつかのカウントを監視することです。これらのカウントのいずれかが一定期間にわたって特定の数を超えると、電子メールが送信されます。これは監視目的のためであり、常に実行する必要があります。私が得る問題は、実行中は常にバックグラウンドで「File "asdf.py"、line blah、in firstrun」のようなエラーをスローしていることです。

関数をループしていることがわかるので不平を言っていると思いますが、これを行うために必要なことは、エラーを除いて完全に機能し、再帰の最大深度を超えたため、最終的にスクリプトを強制終了します。何か助けはありますか?

4

2 に答える 2

3

ここには無限再帰があります。runfirstから呼び出すためrunthird、どんどん深くなり続け、どの関数も返されません。while True関数を相互に呼び出すのではなく、関数をループに入れることを検討することをお勧めします。

def runfirst():
    do some stuff
def runsecond():
    do some different stuff
def runthird():
    do some more stuff

while True:
    runfirst()
    runsecond()
    runthird()
于 2013-10-03T15:16:33.103 に答える
1

あなたはループしていません。

別の関数を呼び出す関数を呼び出して、最初の関数を呼び出す 3 番目の関数を呼び出し、2 番目の関数を呼び出して 3 番目の関数を呼び出し、3 番目の関数を呼び出して、スタックがオーバーフローするまで続けます。

于 2013-10-03T15:14:50.450 に答える