スレッド化されたコードを簡単にする方法を探しています。
私のコードには、次のようなことをする場所がたくさんあります。
for arg in array:
t=Thread(lambda:myFunction(arg))
t.start()
つまり、毎回異なるパラメーターに対してスレッドで同じ関数を実行します。
もちろん、これは実際のコードの単純化されたバージョンであり、通常、ループ内のコードfor
は 10 ~ 20 行の長さであり、上記の例のように 1 つの補助関数を使用して単純化することはできませんmyFunction
(そうであった場合、スレッドプールを使用できたはずです)。
また、このシナリオは私のコードでは非常に一般的であるため、冗長だと思われる行がたくさんあります。この定型コードをすべて処理する必要がなく、代わりに次のようなことができれば、非常に役立ちます。
for arg in array:
with threaded():
myFunction(arg)
つまり、どういうわけかthreaded()
その中のすべてのコード行を取得し、別のスレッドで実行します。
コンテキストマネージャーはそのような状況で使用することは想定されておらず、おそらく悪い考えであり、醜いハックが必要になることを知っていますが、それでも-それは可能で、どのように行うことができますか?