处理实时python项目,由于特定原因,我需要管理和监视某些对象的生命周期。
在我的代码中,我确实有一些函数生成器,它在每个特定的时间段内生成对象,我调用time_of_creation
并且每个函数都有一个service_time
。我正在使用线程来创建这些对象。
我想知道如何移除一个给定time_of_creation
及其service_time
的对象。我是否还需要使用线程监视这些对象?这样做是对的:假设我已经有一个名为remove的函数作为对象obj和一个键
while 1:
if time.time() - obj[key].time_of_creation == id_obj[key].service_time:
remove(obj, key)
答案 0 :(得分:1)
我相信你可以。请记住:
使用threading.Lock或类似方法同步对线程之间对象的访问,因此在其他线程正在使用对象时,不要尝试删除该对象。
不是比较相等,而是检查经过的时间是否大于或等于服务时间,以防您错过确切的时间(即使您的线程在循环体内没有睡眠一点(它应该imo),由于调度或查找/删除操作占用时间,它可能会错过准确的时间)。迟到总比没有好。