クラスに次のコードがあります。
def __setattr__(self, key, value):
self.__dict__['d'][key] = value
...
self.saveToIni()
この関数は、すべてのオブジェクトの呼び出しsaveToIni
で、dict のすべての項目を ini ファイルに保存します。setattr
最後の 120 ミリ秒で80 回setattr
の呼び出しが行われた場合、ファイルは毎回ゼロから書き込まれます。関数は辞書からデータを並べ替えたり、削除したりすることもあるので、変更したくありません。
呼び出しを 1 回、たとえば 5 秒に制限したい:
- 最初の
setattr
トリガーがトリガーされると、タイマーは非同期に開始されますが、まだ実行されていませんsaveToIni
。 - への呼び出しが行われ
setattr
、タイマーがまだカウントされている場合、タイマーを起動したり、実行したりしませんsaveToIni
。 - タイマーがタイムアウトすると、
saveToIni
が起動します。
今、私はこの振る舞いを達成する方法がわかりません。スレッドをいじることを考えましたが、それを行う方法についてのアイデアはまだ見つかりませんでした。