diff options
Diffstat (limited to 'event_log.py')
-rw-r--r-- | event_log.py | 23 |
1 files changed, 11 insertions, 12 deletions
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): | |||
51 | def __init__(self): | 51 | def __init__(self): |
52 | """Initializes the event log.""" | 52 | """Initializes the event log.""" |
53 | self._log = [] | 53 | self._log = [] |
54 | self._next_id = _EventIdGenerator() | ||
55 | self._parent = None | 54 | self._parent = None |
56 | 55 | ||
57 | def Add(self, name, task_name, start, finish=None, success=None, | 56 | def Add(self, name, task_name, start, finish=None, success=None, |
@@ -71,7 +70,7 @@ class EventLog(object): | |||
71 | A dictionary of the event added to the log. | 70 | A dictionary of the event added to the log. |
72 | """ | 71 | """ |
73 | event = { | 72 | event = { |
74 | 'id': (kind, next(self._next_id)), | 73 | 'id': (kind, _NextEventId()), |
75 | 'name': name, | 74 | 'name': name, |
76 | 'task_name': task_name, | 75 | 'task_name': task_name, |
77 | 'start_time': start, | 76 | 'start_time': start, |
@@ -162,16 +161,16 @@ class EventLog(object): | |||
162 | f.write('\n') | 161 | f.write('\n') |
163 | 162 | ||
164 | 163 | ||
165 | def _EventIdGenerator(): | 164 | # An integer id that is unique across this invocation of the program. |
166 | """Returns multi-process safe iterator that generates locally unique id. | 165 | _EVENT_ID = multiprocessing.Value('i', 1) |
167 | 166 | ||
168 | Yields: | 167 | def _NextEventId(): |
168 | """Helper function for grabbing the next unique id. | ||
169 | |||
170 | Returns: | ||
169 | A unique, to this invocation of the program, integer id. | 171 | A unique, to this invocation of the program, integer id. |
170 | """ | 172 | """ |
171 | eid = multiprocessing.Value('i', 1) | 173 | with _EVENT_ID.get_lock(): |
172 | 174 | val = _EVENT_ID.value | |
173 | while True: | 175 | _EVENT_ID.value += 1 |
174 | with eid.get_lock(): | 176 | return val |
175 | val = eid.value | ||
176 | eid.value += 1 | ||
177 | yield val | ||