如何使用python跟踪对象的生命周期?

时间:2017-05-15 19:01:09

标签: python multithreading time

处理实时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)

1 个答案:

答案 0 :(得分:1)

我相信你可以。请记住:

  1. 使用threading.Lock或类似方法同步对线程之间对象的访问,因此在其他线程正在使用对象时,不要尝试删除该对象。

  2. 不是比较相等,而是检查经过的时间是否大于或等于服务时间,以防您错过确切的时间(即使您的线程在循环体内没有睡眠一点(它应该imo),由于调度或查找/删除操作占用时间,它可能会错过准确的时间)。迟到总比没有好。