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 | ||
