2016-08-13 15 views
-1

私はループ内にforループを持っています。私はifで何かをチェックし、条件が満たされたら関数を起動します。この機能には待機期間(time.sleep)が含まれており、その機能が終了するまでループが一時停止されていることがわかりました。私のスクリプトを停止/一時停止させない関数

この関数が実行されている間にループを実行させる方法はありますか? 私は多分別のスクリプトを起動すると思っていますが、ループを一時停止しないこともわかりません...

目標は、最初のスクリプトが終了する前に再び機能を起動できるようにすることです。

カントーコードは一種のあなたが記述問題はかなり自明そうのような単純なスレッドで解決することができる。この

def myfunction(): 
    time.sleep(30) 
    print("waited 30 seconds...") 
    do something 
for something 
    if condition: 
     myfunction() 
    print("the loop is resumed...") 
+3

郵便実際のコードではないことの説明を。あなたが[マルチプロセッシング](https://docs.python.org/3.5/library/multiprocessing.html)をしたいように思えます。 – Holloway

+0

コードは秘密です、申し訳ありません – Seb

+1

これは問題ありません。匿名化された[mcve]を作成します。 – jonrsharpe

答えて

0

次のようになります。

import time 
import threading 

def myfunction(): 
    time.sleep(30) 
    print("waited 30 seconds.") 
    # do whatever else 

num = 0 
mythreads = [] 
while(True): # Just loop forever for demo purposes 
    num += 1 
    if num % 5 == 0: # Execute the function once every 5 times 
     newthread = threading.Thread(target=myfunction) 
     mythreads.append(newthread) 
     newthread.start() 
    print("The loop is resumed.") 
+0

うまく見えますが、私はそれを試してみるでしょう。機能が実行されると、newtスレッドは自動的に停止しますか? – Seb

+0

今のように動作しているように見えます。どうもありがとう! – Seb

+0

@Sebあなたのために働いている場合は、答えを受け入れてください。 – Feneric

関連する問題