Revision 1867
Added by Aaron Marcuse-Kubitza almost 13 years ago
lib/Runnable.py | ||
---|---|---|
1 | 1 |
# Runnable object |
2 | 2 |
|
3 |
import copy |
|
4 |
|
|
5 |
import eval_ |
|
6 |
|
|
3 | 7 |
class Runnable: |
8 |
'''A picklable function call''' |
|
9 |
|
|
4 | 10 |
def __init__(self, func, *args, **kw_args): |
5 | 11 |
self.func = func |
6 | 12 |
self.args = args |
7 | 13 |
self.kw_args = kw_args |
8 | 14 |
|
9 | 15 |
def __call__(self): return self.func(*self.args, **self.kw_args) |
16 |
|
|
17 |
def __getstate__(self): |
|
18 |
state = copy.copy(self.__dict__) # shallow copy |
|
19 |
state['func'] = eval_.func2name(state['func']) # make func picklable |
|
20 |
return state |
|
21 |
|
|
22 |
def __setstate__(self, state): |
|
23 |
state['func'] = eval_.name2func(*state['func']) |
|
24 |
self.__dict__ = state |
Also available in: Unified diff
Runnable.py: Made it picklable