Mercurial > cpython-lru_cache-weakref
annotate Lib/multiprocessing/util.py @ 58925:eecf1bef052d 2.6
Merged revisions 78207 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78207 | ezio.melotti | 2010-02-17 01:26:09 +0200 (Wed, 17 Feb 2010) | 1 line
#7930: fix stripid
........
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Tue, 16 Feb 2010 23:29:44 +0000 |
| parents | 05f90cecb2a2 |
| children | 9ac8699d88d6 |
| rev | line source |
|---|---|
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
1 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
2 # Module providing various facilities to other parts of the package |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
3 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
4 # multiprocessing/util.py |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
5 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
6 # Copyright (c) 2006-2008, R Oudkerk --- see COPYING.txt |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
7 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
8 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
9 import itertools |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
10 import weakref |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
11 import atexit |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
12 import threading # we want threading to install it's |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
13 # cleanup function before multiprocessing does |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
14 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
15 from multiprocessing.process import current_process, active_children |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
16 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
17 __all__ = [ |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
18 'sub_debug', 'debug', 'info', 'sub_warning', 'get_logger', |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
19 'log_to_stderr', 'get_temp_dir', 'register_after_fork', |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
20 'is_exiting', 'Finalize', 'ForkAwareThreadLock', 'ForkAwareLocal', |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
21 'SUBDEBUG', 'SUBWARNING', |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
22 ] |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
23 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
24 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
25 # Logging |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
26 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
27 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
28 NOTSET = 0 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
29 SUBDEBUG = 5 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
30 DEBUG = 10 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
31 INFO = 20 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
32 SUBWARNING = 25 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
33 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
34 LOGGER_NAME = 'multiprocessing' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
35 DEFAULT_LOGGING_FORMAT = '[%(levelname)s/%(processName)s] %(message)s' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
36 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
37 _logger = None |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
38 _log_to_stderr = False |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
39 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
40 def sub_debug(msg, *args): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
41 if _logger: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
42 _logger.log(SUBDEBUG, msg, *args) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
43 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
44 def debug(msg, *args): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
45 if _logger: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
46 _logger.log(DEBUG, msg, *args) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
47 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
48 def info(msg, *args): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
49 if _logger: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
50 _logger.log(INFO, msg, *args) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
51 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
52 def sub_warning(msg, *args): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
53 if _logger: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
54 _logger.log(SUBWARNING, msg, *args) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
55 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
56 def get_logger(): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
57 ''' |
|
48931
51f795c9530e
revert r66114 for Jesse
Benjamin Peterson <benjamin@python.org>
parents:
48930
diff
changeset
|
58 Returns logger used by multiprocessing |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
59 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
60 global _logger |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
61 import logging, atexit |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
62 |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
63 logging._acquireLock() |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
64 try: |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
65 if not _logger: |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
66 |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
67 _logger = logging.getLogger(LOGGER_NAME) |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
68 _logger.propagate = 0 |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
69 logging.addLevelName(SUBDEBUG, 'SUBDEBUG') |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
70 logging.addLevelName(SUBWARNING, 'SUBWARNING') |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
71 |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
72 # XXX multiprocessing should cleanup before logging |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
73 if hasattr(atexit, 'unregister'): |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
74 atexit.unregister(_exit_function) |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
75 atexit.register(_exit_function) |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
76 else: |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
77 atexit._exithandlers.remove((_exit_function, (), {})) |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
78 atexit._exithandlers.append((_exit_function, (), {})) |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
79 |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
80 finally: |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
81 logging._releaseLock() |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
82 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
83 return _logger |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
84 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
85 def log_to_stderr(level=None): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
86 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
87 Turn on logging and add a handler which prints to stderr |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
88 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
89 global _log_to_stderr |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
90 import logging |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
91 |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
92 logger = get_logger() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
93 formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
94 handler = logging.StreamHandler() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
95 handler.setFormatter(formatter) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
96 logger.addHandler(handler) |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
97 |
|
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
98 if level: |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
99 logger.setLevel(level) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
100 _log_to_stderr = True |
|
52526
05f90cecb2a2
Merged revisions 68915 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
52148
diff
changeset
|
101 return _logger |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
102 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
103 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
104 # Function returning a temp directory which will be removed on exit |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
105 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
106 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
107 def get_temp_dir(): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
108 # get name of a temp directory which will be automatically cleaned up |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
109 if current_process()._tempdir is None: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
110 import shutil, tempfile |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
111 tempdir = tempfile.mkdtemp(prefix='pymp-') |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
112 info('created temp directory %s', tempdir) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
113 Finalize(None, shutil.rmtree, args=[tempdir], exitpriority=-100) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
114 current_process()._tempdir = tempdir |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
115 return current_process()._tempdir |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
116 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
117 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
118 # Support for reinitialization of objects when bootstrapping a child process |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
119 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
120 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
121 _afterfork_registry = weakref.WeakValueDictionary() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
122 _afterfork_counter = itertools.count() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
123 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
124 def _run_after_forkers(): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
125 items = list(_afterfork_registry.items()) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
126 items.sort() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
127 for (index, ident, func), obj in items: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
128 try: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
129 func(obj) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
130 except Exception, e: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
131 info('after forker raised exception %s', e) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
132 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
133 def register_after_fork(obj, func): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
134 _afterfork_registry[(_afterfork_counter.next(), id(obj), func)] = obj |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
135 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
136 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
137 # Finalization using weakrefs |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
138 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
139 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
140 _finalizer_registry = {} |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
141 _finalizer_counter = itertools.count() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
142 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
143 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
144 class Finalize(object): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
145 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
146 Class which supports object finalization using weakrefs |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
147 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
148 def __init__(self, obj, callback, args=(), kwargs=None, exitpriority=None): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
149 assert exitpriority is None or type(exitpriority) is int |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
150 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
151 if obj is not None: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
152 self._weakref = weakref.ref(obj, self) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
153 else: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
154 assert exitpriority is not None |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
155 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
156 self._callback = callback |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
157 self._args = args |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
158 self._kwargs = kwargs or {} |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
159 self._key = (exitpriority, _finalizer_counter.next()) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
160 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
161 _finalizer_registry[self._key] = self |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
162 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
163 def __call__(self, wr=None): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
164 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
165 Run the callback unless it has already been called or cancelled |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
166 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
167 try: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
168 del _finalizer_registry[self._key] |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
169 except KeyError: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
170 sub_debug('finalizer no longer registered') |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
171 else: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
172 sub_debug('finalizer calling %s with args %s and kwargs %s', |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
173 self._callback, self._args, self._kwargs) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
174 res = self._callback(*self._args, **self._kwargs) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
175 self._weakref = self._callback = self._args = \ |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
176 self._kwargs = self._key = None |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
177 return res |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
178 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
179 def cancel(self): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
180 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
181 Cancel finalization of the object |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
182 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
183 try: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
184 del _finalizer_registry[self._key] |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
185 except KeyError: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
186 pass |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
187 else: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
188 self._weakref = self._callback = self._args = \ |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
189 self._kwargs = self._key = None |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
190 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
191 def still_active(self): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
192 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
193 Return whether this finalizer is still waiting to invoke callback |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
194 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
195 return self._key in _finalizer_registry |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
196 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
197 def __repr__(self): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
198 try: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
199 obj = self._weakref() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
200 except (AttributeError, TypeError): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
201 obj = None |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
202 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
203 if obj is None: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
204 return '<Finalize object, dead>' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
205 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
206 x = '<Finalize object, callback=%s' % \ |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
207 getattr(self._callback, '__name__', self._callback) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
208 if self._args: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
209 x += ', args=' + str(self._args) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
210 if self._kwargs: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
211 x += ', kwargs=' + str(self._kwargs) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
212 if self._key[0] is not None: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
213 x += ', exitprority=' + str(self._key[0]) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
214 return x + '>' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
215 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
216 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
217 def _run_finalizers(minpriority=None): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
218 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
219 Run all finalizers whose exit priority is not None and at least minpriority |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
220 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
221 Finalizers with highest priority are called first; finalizers with |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
222 the same priority will be called in reverse order of creation. |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
223 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
224 if minpriority is None: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
225 f = lambda p : p[0][0] is not None |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
226 else: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
227 f = lambda p : p[0][0] is not None and p[0][0] >= minpriority |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
228 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
229 items = [x for x in _finalizer_registry.items() if f(x)] |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
230 items.sort(reverse=True) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
231 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
232 for key, finalizer in items: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
233 sub_debug('calling %s', finalizer) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
234 try: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
235 finalizer() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
236 except Exception: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
237 import traceback |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
238 traceback.print_exc() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
239 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
240 if minpriority is None: |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
241 _finalizer_registry.clear() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
242 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
243 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
244 # Clean up on exit |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
245 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
246 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
247 def is_exiting(): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
248 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
249 Returns true if the process is shutting down |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
250 ''' |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
251 return _exiting or _exiting is None |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
252 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
253 _exiting = False |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
254 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
255 def _exit_function(): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
256 global _exiting |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
257 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
258 info('process shutting down') |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
259 debug('running all "atexit" finalizers with priority >= 0') |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
260 _run_finalizers(0) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
261 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
262 for p in active_children(): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
263 if p._daemonic: |
|
48302
7ea805d879e1
issue3352: clean up the multiprocessing API to remove many get_/set_ methods and convert them to properties. Update the docs and the examples included.
Jesse Noller <jnoller@gmail.com>
parents:
47980
diff
changeset
|
264 info('calling terminate() for daemon %s', p.name) |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
265 p._popen.terminate() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
266 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
267 for p in active_children(): |
|
48302
7ea805d879e1
issue3352: clean up the multiprocessing API to remove many get_/set_ methods and convert them to properties. Update the docs and the examples included.
Jesse Noller <jnoller@gmail.com>
parents:
47980
diff
changeset
|
268 info('calling join() for process %s', p.name) |
|
47696
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
269 p.join() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
270 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
271 debug('running the remaining "atexit" finalizers') |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
272 _run_finalizers() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
273 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
274 atexit.register(_exit_function) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
275 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
276 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
277 # Some fork aware types |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
278 # |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
279 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
280 class ForkAwareThreadLock(object): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
281 def __init__(self): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
282 self._lock = threading.Lock() |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
283 self.acquire = self._lock.acquire |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
284 self.release = self._lock.release |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
285 register_after_fork(self, ForkAwareThreadLock.__init__) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
286 |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
287 class ForkAwareLocal(threading.local): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
288 def __init__(self): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
289 register_after_fork(self, lambda obj : obj.__dict__.clear()) |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
290 def __reduce__(self): |
|
d01165fae98e
darn! I converted half of the files the wrong way.
Benjamin Peterson <benjamin@python.org>
parents:
47694
diff
changeset
|
291 return type(self), () |
