equal
deleted
inserted
replaced
63 if _job.success: |
63 if _job.success: |
64 # result is ignored |
64 # result is ignored |
65 pass |
65 pass |
66 else: |
66 else: |
67 raise _job.exc_info[0], _job.exc_info[1], _job.exc_info[2] |
67 raise _job.exc_info[0], _job.exc_info[1], _job.exc_info[2] |
|
68 |
68 while not self._finish: |
69 while not self._finish: |
69 self.todo.wait() |
70 self.todo.wait() |
70 if self.job is not None: |
71 if self.job is not None: |
71 self.job.do() |
72 self.job.do() |
72 self.done.notify() |
73 self.done.notify() |
73 else: |
74 else: |
74 self.free.notify() |
75 break |
|
76 |
75 self.mutex.release() |
77 self.mutex.release() |
76 |
78 |
77 def call(self, *args, **kwargs): |
79 def call(self, *args, **kwargs): |
78 """ |
80 """ |
79 creates a job, execute it in worker thread, and deliver result. |
81 creates a job, execute it in worker thread, and deliver result. |
95 self.free.wait() |
97 self.free.wait() |
96 |
98 |
97 self.job = _job |
99 self.job = _job |
98 self.todo.notify() |
100 self.todo.notify() |
99 self.done.wait() |
101 self.done.wait() |
100 _job = self.job |
|
101 self.job = None |
102 self.job = None |
|
103 self.free.notify() |
102 self.mutex.release() |
104 self.mutex.release() |
103 |
105 |
104 if _job.success: |
106 if _job.success: |
105 return _job.result |
107 return _job.result |
106 else: |
108 else: |