0

我有一个关于在 python 中同时访问 list 的问题。我有一个将数据添加到列表的扭曲类,以及一个每 4 秒调用一次的方法。这个方法它对列表的元素进行一些操作。我担心从 ossPeriodic 和从 dataReceived 访问同一个列表会产生一致性问题。这是代码:

ossStorage=[]

def ossPeriodic():
for i in ossStorage:
            ossStorage.remove(i)
    db.insertDataToDb(i)
reactor.callLater(4, ossPeriodic)

class OSS(Protocol):
    def dataReceived(self, data):
        account = pickle.loads(data)        
        ossStorage.append(account)



def main():
    ossFactory = Factory()
    ossFactory.protocol = OSS
    reactor.listenTCP(50000, ossFactory)    
    reactor.callLater(4, ossPeriodic)
    reactor.run()

我应该使用锁或类似的东西吗?谢谢!

4

1 回答 1

3

你在使用线程吗?如果没有,那么您没有对列表的并发访问权限。

通常使用 Twisted 的应用程序不使用线程。Twisted 的异步特性在单个线程中执行,按顺序处理每个事件。异步特性提供了类似并发的行为,例如并行处理许多网络连接,但每个回调函数在调用下一个回调函数之前运行完成。

于 2013-03-20T22:08:16.760 回答