2016-07-27 11 views
0

私は2つのArg(入力設定ファイルと出力ファイル)を取り込むPythonモジュールを持っています。私はモジュールの最後に標準的な方法でmain関数を呼び出します。メイン関数(時間<を処理し現在時刻 - 20分)の終わりに論理で一定時間条件でPython 2.7 - Call main recursivelly

# Call to main function 

if __name__ == '__main__': 
    main() 

、Iは、処理時間が20分以内になるまで、再び主な機能を処理する必要が現在の時刻。モジュールに渡される引数が与えられ

は、私は特別なまたは 何かをしなければならないのは、メイン

if (time delta condition): 
    main() 
else: 
    sys.exit() 

の終わりに、私はモジュールを仮定している文の場合、私はこれを持っているのと同じくらい簡単です上記のメイン呼び出しは、Cronからモジュールを呼び出すためにそこに存在する必要があります。

お知らせください。それが呼び出されるたびに私はargv[1][2]を処理するメインが必要です。

よろしくシバ

+0

を答えは「はい」と信じています。あなたの提案と同じくらい簡単です。あなたはそれを試しましたか? – smarx

+0

それは働いた。ありがとうsmarx – Siva

答えて

0

一般再帰は、フロー制御の優れた方法はありません。 1つは、再帰呼び出しreturn(ただし、再帰的ではない場合はsys.exit()を呼び出してこの問題を回避しているように見えますが)に何が起こるかに注意する必要があります。

代わりにwhileループを使用する方が適切な場合があります。以下のような何か:

def main(): 
    while some_condition(): 
     do_stuff() 

もちろん、あなたが私はあなたの問題の実際の詳細を作ってるんだ関数呼び出しを置き換える必要があります。

開始時に条件が真ではないかもしれないが、ループ本体を少なくとも一度は実行したい場合は、ループ本体の最後で実際の条件チェックを行い、結果変数に:条件は、それが(ループ本体の真ん中にすることができる)いくつかの点で適切だ示している場合

def main(): 
    keep_running = True 
    while keep_running: 
     do_stuff() 
     keep_running = some_condition() 

また、ループの外にwhile Truebreakを使用することができます。

def main(): 
    while True: 
     do_stuff() 
     if exit_condition(): 
      break 
     do_other_stuff() 
+0

より効率的にそれを行うための素晴らしい方法。これを説明する時間をとってくれてありがとうBlcknght。 – Siva