クラスに次のコードがあります。
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が起動します。
今、私はこの振る舞いを達成する方法がわかりません。スレッドをいじることを考えましたが、それを行う方法についてのアイデアはまだ見つかりませんでした。