diff --git a/event_log.py b/event_log.py index 508b18ee..0696df50 100644 --- a/event_log.py +++ b/event_log.py @@ -51,7 +51,6 @@ class EventLog(object): def __init__(self): """Initializes the event log.""" self._log = [] - self._next_id = _EventIdGenerator() self._parent = None def Add(self, name, task_name, start, finish=None, success=None, @@ -71,7 +70,7 @@ class EventLog(object): A dictionary of the event added to the log. """ event = { - 'id': (kind, next(self._next_id)), + 'id': (kind, _NextEventId()), 'name': name, 'task_name': task_name, 'start_time': start, @@ -162,16 +161,16 @@ class EventLog(object): f.write('\n') -def _EventIdGenerator(): - """Returns multi-process safe iterator that generates locally unique id. +# An integer id that is unique across this invocation of the program. +_EVENT_ID = multiprocessing.Value('i', 1) - Yields: +def _NextEventId(): + """Helper function for grabbing the next unique id. + + Returns: A unique, to this invocation of the program, integer id. """ - eid = multiprocessing.Value('i', 1) - - while True: - with eid.get_lock(): - val = eid.value - eid.value += 1 - yield val + with _EVENT_ID.get_lock(): + val = _EVENT_ID.value + _EVENT_ID.value += 1 + return val