長い期間など長時間実行されるプロセスで同じスレッドを使用しておいてください。Pythonは私が並列私は6時間以上稼働を維持したいモデルを持っている
pool = multiprocessing.Pool(10)
for subModel in self.model:
pool.apply_async(self.compute, subModel, features)
pool.close()
pool.join()
私が持っているような問題は今、遅すぎますモデルが6時間に何回も実行されている間に、10スレッドを構築および分解するたびに、call pool = multiprocessing.Pool(10)およびpool.join()を呼び出します。
私が考えている解決策は、バックグラウンドで実行されている10個のスレッドを維持することです。新しいデータが入ってくるたびに新しいスレッドを作成して解体することを心配せずにすぐにモデルに入ります。
Pythonで長時間実行するプロセスを持つことができ、何度も何度もやり直す必要はありませんか?
一度に実行できるPythonスレッドは1つしかないため、パフォーマンスが向上しないことにご注意ください。 – nwp
GILのスレッドクラスと違って、multiprocessing.poolは複数のスレッドを同時に実行できると思っています –
@nwp 'multiprocessing.Pool'はGILの影響を受けません。プールに「スレッド」を持つものとして言及しても間違っています。 – Sneftel