threading
モジュール
threading
モジュールを使用すると、他のスレッドのsleep
文によって影響されない新しいスレッドを開始することができます。これにはN
スレッドが必要です。したがって、N
が非常に大きい場合はお知らせください。代替ソリューションについて考えてみましょう。
あなたはN
スレッドを作成し、タイミングループにそれぞれ1を設定し、そのようにすることができます
import threading, time
def looper(function, delay): # Creates a function that will loop that function
def inner(): # Will keep looping once invoked
while True:
function() # Call the function; you can optionally add args
time.sleep(delay) # Swap this line and the one before it to wait before running rather than after
return inner # The function that should be called to start the loop is returned
def start(functions, delays): # Call this with the two lists to start the loops
for function, delay in zip(functions, delays): # Goes through the respective pairs
thread = threading.Thread(target = looper(function, delay)) # This thread will start the looper
thread.start()
start([lambda: print("hi"), lambda: print("bye")], [0.2, 0.3])
あなたは、オンラインhereそれを試すことができます。ちょうどあなたがそれを殺したいときに実行してから再度実行してください(オンライン通訳のための@DennisMitchellのおかげで)
こんにちは、答えに感謝します。関数を並列に実行したくない理由は、各関数がデータをデータベースに挿入するからです。私は同時に挿入を処理すると思うSQLAlchemyを使用していますが、同時にこの複雑さを避けたいと思います。多分私はこれについて心配するべきではない。 – s5s
@ s5s - これは競合状態に問題を引き起こす可能性があります。私は、並列を必要としないメソッドを作成しようとします – HyperNeutrino
私は私の質問を更新しました。 Nは現在約200です。 – s5s