私が知っていたときに書いたPythonコードの一部を掃除しています。主に私は、Pythonでのスレッド化の不完全な理解から生まれた複雑さの一部を取り除いています。スレッドセーフなアイテムのリストを作成する必要があります。通常のロック方法ではなく、不変なリストを使って行いたいと思います。私は、不完全な状態変化を取り巻くスレッド安全性の問題がすべて消えてしまうので、不変のオブジェクトはスレッディングに関して非常に特別であることを知っています。Pythonでの不変性とスレッドの安全性
私は次のコードがスレッドセーフであることを尋ねます:
class ImmutableList(object):
def __init__(self):
self._list =()
def __iter__(self):
return self._list.__iter__()
def append(self, x):
self._list = self._list + tuple([x])
毎回新しいリストが作成されると思います。他のスレッドが反復している間にリストが更新された場合、残りの反復で古いリストが引き続き使用されます。これは私にとっては大丈夫ですが、誰にとってもそうでないかもしれません。
また、これは良い考えですか?リストのサイズが小さく、リストがあまり変更されない(イベントリスナーが気になる)いくつかの状況にのみ適用したいと思います。
をところで、あなたに「(X、)」「([X])タプル」を書くことができます。 –