blob: fe5b81fa390b90397f0f857f4472db588727869f [file] [log] [blame]
Antoine Pitrou64a467d2010-12-12 20:34:49 +00001:mod:`multiprocessing` --- Process-based parallelism
2====================================================
Benjamin Petersone711caf2008-06-11 16:44:04 +00003
4.. module:: multiprocessing
Antoine Pitrou64a467d2010-12-12 20:34:49 +00005 :synopsis: Process-based parallelism.
Benjamin Petersone711caf2008-06-11 16:44:04 +00006
Benjamin Petersone711caf2008-06-11 16:44:04 +00007
8Introduction
Georg Brandl49702152008-09-29 06:43:45 +00009------------
Benjamin Petersone711caf2008-06-11 16:44:04 +000010
Benjamin Peterson5289b2b2008-06-28 00:40:54 +000011:mod:`multiprocessing` is a package that supports spawning processes using an
12API similar to the :mod:`threading` module. The :mod:`multiprocessing` package
13offers both local and remote concurrency, effectively side-stepping the
14:term:`Global Interpreter Lock` by using subprocesses instead of threads. Due
15to this, the :mod:`multiprocessing` module allows the programmer to fully
16leverage multiple processors on a given machine. It runs on both Unix and
17Windows.
Benjamin Petersone711caf2008-06-11 16:44:04 +000018
Raymond Hettingerfd151912010-11-04 03:02:56 +000019.. note::
Benjamin Petersone5384b02008-10-04 22:00:42 +000020
21 Some of this package's functionality requires a functioning shared semaphore
Georg Brandl48310cd2009-01-03 21:18:54 +000022 implementation on the host operating system. Without one, the
23 :mod:`multiprocessing.synchronize` module will be disabled, and attempts to
24 import it will result in an :exc:`ImportError`. See
Benjamin Petersone5384b02008-10-04 22:00:42 +000025 :issue:`3770` for additional information.
Benjamin Petersone711caf2008-06-11 16:44:04 +000026
Jesse Noller45239682008-11-28 18:46:19 +000027.. note::
28
Ezio Melotti2ee88352011-04-29 07:10:24 +030029 Functionality within this package requires that the ``__main__`` module be
Jesse Noller45239682008-11-28 18:46:19 +000030 importable by the children. This is covered in :ref:`multiprocessing-programming`
31 however it is worth pointing out here. This means that some examples, such
32 as the :class:`multiprocessing.Pool` examples will not work in the
33 interactive interpreter. For example::
34
35 >>> from multiprocessing import Pool
36 >>> p = Pool(5)
37 >>> def f(x):
Georg Brandla1c6a1c2009-01-03 21:26:05 +000038 ... return x*x
Georg Brandl48310cd2009-01-03 21:18:54 +000039 ...
Jesse Noller45239682008-11-28 18:46:19 +000040 >>> p.map(f, [1,2,3])
41 Process PoolWorker-1:
42 Process PoolWorker-2:
R. David Murray8e8099c2009-04-28 18:02:00 +000043 Process PoolWorker-3:
44 Traceback (most recent call last):
Jesse Noller45239682008-11-28 18:46:19 +000045 Traceback (most recent call last):
46 Traceback (most recent call last):
47 AttributeError: 'module' object has no attribute 'f'
48 AttributeError: 'module' object has no attribute 'f'
49 AttributeError: 'module' object has no attribute 'f'
50
R. David Murray8e8099c2009-04-28 18:02:00 +000051 (If you try this it will actually output three full tracebacks
52 interleaved in a semi-random fashion, and then you may have to
53 stop the master process somehow.)
54
Jesse Noller45239682008-11-28 18:46:19 +000055
Benjamin Petersone711caf2008-06-11 16:44:04 +000056The :class:`Process` class
57~~~~~~~~~~~~~~~~~~~~~~~~~~
58
59In :mod:`multiprocessing`, processes are spawned by creating a :class:`Process`
Benjamin Peterson5289b2b2008-06-28 00:40:54 +000060object and then calling its :meth:`~Process.start` method. :class:`Process`
Benjamin Petersone711caf2008-06-11 16:44:04 +000061follows the API of :class:`threading.Thread`. A trivial example of a
62multiprocess program is ::
63
Georg Brandlb3959bd2010-04-08 06:33:16 +000064 from multiprocessing import Process
Benjamin Petersone711caf2008-06-11 16:44:04 +000065
66 def f(name):
Georg Brandl49702152008-09-29 06:43:45 +000067 print('hello', name)
Benjamin Petersone711caf2008-06-11 16:44:04 +000068
Georg Brandlb3959bd2010-04-08 06:33:16 +000069 if __name__ == '__main__':
70 p = Process(target=f, args=('bob',))
71 p.start()
72 p.join()
Benjamin Petersone711caf2008-06-11 16:44:04 +000073
Jesse Noller45239682008-11-28 18:46:19 +000074To show the individual process IDs involved, here is an expanded example::
75
76 from multiprocessing import Process
77 import os
78
79 def info(title):
Ezio Melotti985e24d2009-09-13 07:54:02 +000080 print(title)
81 print('module name:', __name__)
82 print('parent process:', os.getppid())
83 print('process id:', os.getpid())
Georg Brandl48310cd2009-01-03 21:18:54 +000084
Jesse Noller45239682008-11-28 18:46:19 +000085 def f(name):
86 info('function f')
Ezio Melotti985e24d2009-09-13 07:54:02 +000087 print('hello', name)
Georg Brandl48310cd2009-01-03 21:18:54 +000088
Jesse Noller45239682008-11-28 18:46:19 +000089 if __name__ == '__main__':
90 info('main line')
91 p = Process(target=f, args=('bob',))
92 p.start()
93 p.join()
Benjamin Petersone711caf2008-06-11 16:44:04 +000094
95For an explanation of why (on Windows) the ``if __name__ == '__main__'`` part is
96necessary, see :ref:`multiprocessing-programming`.
97
98
99
100Exchanging objects between processes
101~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102
103:mod:`multiprocessing` supports two types of communication channel between
104processes:
105
106**Queues**
107
Benjamin Peterson257060a2008-06-28 01:42:41 +0000108 The :class:`Queue` class is a near clone of :class:`queue.Queue`. For
Benjamin Petersone711caf2008-06-11 16:44:04 +0000109 example::
110
111 from multiprocessing import Process, Queue
112
113 def f(q):
114 q.put([42, None, 'hello'])
115
Georg Brandl1f01deb2009-01-03 22:47:39 +0000116 if __name__ == '__main__':
117 q = Queue()
118 p = Process(target=f, args=(q,))
119 p.start()
120 print(q.get()) # prints "[42, None, 'hello']"
121 p.join()
Benjamin Petersone711caf2008-06-11 16:44:04 +0000122
Antoine Pitroufc6accc2012-05-18 13:57:04 +0200123 Queues are thread and process safe.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000124
125**Pipes**
126
127 The :func:`Pipe` function returns a pair of connection objects connected by a
128 pipe which by default is duplex (two-way). For example::
129
130 from multiprocessing import Process, Pipe
131
132 def f(conn):
133 conn.send([42, None, 'hello'])
134 conn.close()
135
136 if __name__ == '__main__':
137 parent_conn, child_conn = Pipe()
138 p = Process(target=f, args=(child_conn,))
139 p.start()
Georg Brandl49702152008-09-29 06:43:45 +0000140 print(parent_conn.recv()) # prints "[42, None, 'hello']"
Benjamin Petersone711caf2008-06-11 16:44:04 +0000141 p.join()
142
143 The two connection objects returned by :func:`Pipe` represent the two ends of
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000144 the pipe. Each connection object has :meth:`~Connection.send` and
145 :meth:`~Connection.recv` methods (among others). Note that data in a pipe
146 may become corrupted if two processes (or threads) try to read from or write
147 to the *same* end of the pipe at the same time. Of course there is no risk
148 of corruption from processes using different ends of the pipe at the same
149 time.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000150
151
152Synchronization between processes
153~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
154
155:mod:`multiprocessing` contains equivalents of all the synchronization
156primitives from :mod:`threading`. For instance one can use a lock to ensure
157that only one process prints to standard output at a time::
158
159 from multiprocessing import Process, Lock
160
161 def f(l, i):
162 l.acquire()
Georg Brandl49702152008-09-29 06:43:45 +0000163 print('hello world', i)
Benjamin Petersone711caf2008-06-11 16:44:04 +0000164 l.release()
165
166 if __name__ == '__main__':
167 lock = Lock()
168
169 for num in range(10):
170 Process(target=f, args=(lock, num)).start()
171
172Without using the lock output from the different processes is liable to get all
173mixed up.
174
175
176Sharing state between processes
177~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
178
179As mentioned above, when doing concurrent programming it is usually best to
180avoid using shared state as far as possible. This is particularly true when
181using multiple processes.
182
183However, if you really do need to use some shared data then
184:mod:`multiprocessing` provides a couple of ways of doing so.
185
186**Shared memory**
187
188 Data can be stored in a shared memory map using :class:`Value` or
189 :class:`Array`. For example, the following code ::
190
191 from multiprocessing import Process, Value, Array
192
193 def f(n, a):
194 n.value = 3.1415927
195 for i in range(len(a)):
196 a[i] = -a[i]
197
198 if __name__ == '__main__':
199 num = Value('d', 0.0)
200 arr = Array('i', range(10))
201
202 p = Process(target=f, args=(num, arr))
203 p.start()
204 p.join()
205
Georg Brandl49702152008-09-29 06:43:45 +0000206 print(num.value)
207 print(arr[:])
Benjamin Petersone711caf2008-06-11 16:44:04 +0000208
209 will print ::
210
211 3.1415927
212 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
213
214 The ``'d'`` and ``'i'`` arguments used when creating ``num`` and ``arr`` are
215 typecodes of the kind used by the :mod:`array` module: ``'d'`` indicates a
Georg Brandl2ee470f2008-07-16 12:55:28 +0000216 double precision float and ``'i'`` indicates a signed integer. These shared
Georg Brandlf285bcc2010-10-19 21:07:16 +0000217 objects will be process and thread-safe.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000218
219 For more flexibility in using shared memory one can use the
220 :mod:`multiprocessing.sharedctypes` module which supports the creation of
221 arbitrary ctypes objects allocated from shared memory.
222
223**Server process**
224
225 A manager object returned by :func:`Manager` controls a server process which
Georg Brandl2ee470f2008-07-16 12:55:28 +0000226 holds Python objects and allows other processes to manipulate them using
Benjamin Petersone711caf2008-06-11 16:44:04 +0000227 proxies.
228
Richard Oudkerk3730a172012-06-15 18:26:07 +0100229 A manager returned by :func:`Manager` will support types
230 :class:`list`, :class:`dict`, :class:`Namespace`, :class:`Lock`,
231 :class:`RLock`, :class:`Semaphore`, :class:`BoundedSemaphore`,
232 :class:`Condition`, :class:`Event`, :class:`Barrier`,
233 :class:`Queue`, :class:`Value` and :class:`Array`. For example, ::
Benjamin Petersone711caf2008-06-11 16:44:04 +0000234
235 from multiprocessing import Process, Manager
236
237 def f(d, l):
238 d[1] = '1'
239 d['2'] = 2
240 d[0.25] = None
241 l.reverse()
242
243 if __name__ == '__main__':
Richard Oudkerk633c4d92012-06-18 21:29:36 +0100244 with Manager() as manager:
245 d = manager.dict()
246 l = manager.list(range(10))
Benjamin Petersone711caf2008-06-11 16:44:04 +0000247
Richard Oudkerk633c4d92012-06-18 21:29:36 +0100248 p = Process(target=f, args=(d, l))
249 p.start()
250 p.join()
Benjamin Petersone711caf2008-06-11 16:44:04 +0000251
Richard Oudkerk633c4d92012-06-18 21:29:36 +0100252 print(d)
253 print(l)
Benjamin Petersone711caf2008-06-11 16:44:04 +0000254
255 will print ::
256
257 {0.25: None, 1: '1', '2': 2}
258 [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
259
260 Server process managers are more flexible than using shared memory objects
261 because they can be made to support arbitrary object types. Also, a single
262 manager can be shared by processes on different computers over a network.
263 They are, however, slower than using shared memory.
264
265
266Using a pool of workers
267~~~~~~~~~~~~~~~~~~~~~~~
268
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000269The :class:`~multiprocessing.pool.Pool` class represents a pool of worker
Benjamin Petersone711caf2008-06-11 16:44:04 +0000270processes. It has methods which allows tasks to be offloaded to the worker
271processes in a few different ways.
272
273For example::
274
275 from multiprocessing import Pool
276
277 def f(x):
278 return x*x
279
280 if __name__ == '__main__':
Richard Oudkerk633c4d92012-06-18 21:29:36 +0100281 with Pool(processes=4) as pool # start 4 worker processes
282 result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously
283 print(result.get(timeout=1)) # prints "100" unless your computer is *very* slow
284 print(pool.map(f, range(10))) # prints "[0, 1, 4,..., 81]"
Benjamin Petersone711caf2008-06-11 16:44:04 +0000285
286
287Reference
288---------
289
290The :mod:`multiprocessing` package mostly replicates the API of the
291:mod:`threading` module.
292
293
294:class:`Process` and exceptions
295~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
296
Antoine Pitrou0bd4deb2011-02-25 22:07:43 +0000297.. class:: Process([group[, target[, name[, args[, kwargs]]]]], *, daemon=None)
Benjamin Petersone711caf2008-06-11 16:44:04 +0000298
299 Process objects represent activity that is run in a separate process. The
300 :class:`Process` class has equivalents of all the methods of
301 :class:`threading.Thread`.
302
303 The constructor should always be called with keyword arguments. *group*
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000304 should always be ``None``; it exists solely for compatibility with
Benjamin Petersona786b022008-08-25 21:05:21 +0000305 :class:`threading.Thread`. *target* is the callable object to be invoked by
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000306 the :meth:`run()` method. It defaults to ``None``, meaning nothing is
Benjamin Petersone711caf2008-06-11 16:44:04 +0000307 called. *name* is the process name. By default, a unique name is constructed
308 of the form 'Process-N\ :sub:`1`:N\ :sub:`2`:...:N\ :sub:`k`' where N\
309 :sub:`1`,N\ :sub:`2`,...,N\ :sub:`k` is a sequence of integers whose length
310 is determined by the *generation* of the process. *args* is the argument
311 tuple for the target invocation. *kwargs* is a dictionary of keyword
Antoine Pitrou0bd4deb2011-02-25 22:07:43 +0000312 arguments for the target invocation. If provided, the keyword-only *daemon* argument
313 sets the process :attr:`daemon` flag to ``True`` or ``False``. If ``None``
314 (the default), this flag will be inherited from the creating process.
315
316 By default, no arguments are passed to *target*.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000317
318 If a subclass overrides the constructor, it must make sure it invokes the
319 base class constructor (:meth:`Process.__init__`) before doing anything else
320 to the process.
321
Antoine Pitrou0bd4deb2011-02-25 22:07:43 +0000322 .. versionchanged:: 3.3
323 Added the *daemon* argument.
324
Benjamin Petersone711caf2008-06-11 16:44:04 +0000325 .. method:: run()
326
327 Method representing the process's activity.
328
329 You may override this method in a subclass. The standard :meth:`run`
330 method invokes the callable object passed to the object's constructor as
331 the target argument, if any, with sequential and keyword arguments taken
332 from the *args* and *kwargs* arguments, respectively.
333
334 .. method:: start()
335
336 Start the process's activity.
337
338 This must be called at most once per process object. It arranges for the
339 object's :meth:`run` method to be invoked in a separate process.
340
341 .. method:: join([timeout])
342
Charles-François Nataliacd9f7c2011-07-25 18:35:49 +0200343 If the optional argument *timeout* is ``None`` (the default), the method
344 blocks until the process whose :meth:`join` method is called terminates.
345 If *timeout* is a positive number, it blocks at most *timeout* seconds.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000346
347 A process can be joined many times.
348
349 A process cannot join itself because this would cause a deadlock. It is
350 an error to attempt to join a process before it has been started.
351
Benjamin Petersona786b022008-08-25 21:05:21 +0000352 .. attribute:: name
Benjamin Petersone711caf2008-06-11 16:44:04 +0000353
Benjamin Petersona786b022008-08-25 21:05:21 +0000354 The process's name.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000355
356 The name is a string used for identification purposes only. It has no
357 semantics. Multiple processes may be given the same name. The initial
358 name is set by the constructor.
359
Jesse Noller45239682008-11-28 18:46:19 +0000360 .. method:: is_alive
Benjamin Petersone711caf2008-06-11 16:44:04 +0000361
362 Return whether the process is alive.
363
364 Roughly, a process object is alive from the moment the :meth:`start`
365 method returns until the child process terminates.
366
Benjamin Petersona786b022008-08-25 21:05:21 +0000367 .. attribute:: daemon
Benjamin Petersone711caf2008-06-11 16:44:04 +0000368
Benjamin Petersonda10d3b2009-01-01 00:23:30 +0000369 The process's daemon flag, a Boolean value. This must be set before
Benjamin Petersona786b022008-08-25 21:05:21 +0000370 :meth:`start` is called.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000371
372 The initial value is inherited from the creating process.
373
374 When a process exits, it attempts to terminate all of its daemonic child
375 processes.
376
377 Note that a daemonic process is not allowed to create child processes.
378 Otherwise a daemonic process would leave its children orphaned if it gets
Alexandre Vassalotti260484d2009-07-17 11:43:26 +0000379 terminated when its parent process exits. Additionally, these are **not**
380 Unix daemons or services, they are normal processes that will be
Georg Brandl6faee4e2010-09-21 14:48:28 +0000381 terminated (and not joined) if non-daemonic processes have exited.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000382
Benjamin Petersona786b022008-08-25 21:05:21 +0000383 In addition to the :class:`Threading.Thread` API, :class:`Process` objects
384 also support the following attributes and methods:
Benjamin Petersone711caf2008-06-11 16:44:04 +0000385
Benjamin Petersona786b022008-08-25 21:05:21 +0000386 .. attribute:: pid
Benjamin Petersone711caf2008-06-11 16:44:04 +0000387
388 Return the process ID. Before the process is spawned, this will be
389 ``None``.
390
Benjamin Petersona786b022008-08-25 21:05:21 +0000391 .. attribute:: exitcode
Benjamin Petersone711caf2008-06-11 16:44:04 +0000392
Benjamin Petersona786b022008-08-25 21:05:21 +0000393 The child's exit code. This will be ``None`` if the process has not yet
394 terminated. A negative value *-N* indicates that the child was terminated
395 by signal *N*.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000396
Benjamin Petersona786b022008-08-25 21:05:21 +0000397 .. attribute:: authkey
Benjamin Petersone711caf2008-06-11 16:44:04 +0000398
Benjamin Petersona786b022008-08-25 21:05:21 +0000399 The process's authentication key (a byte string).
Benjamin Petersone711caf2008-06-11 16:44:04 +0000400
401 When :mod:`multiprocessing` is initialized the main process is assigned a
402 random string using :func:`os.random`.
403
404 When a :class:`Process` object is created, it will inherit the
Benjamin Petersona786b022008-08-25 21:05:21 +0000405 authentication key of its parent process, although this may be changed by
406 setting :attr:`authkey` to another byte string.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000407
408 See :ref:`multiprocessing-auth-keys`.
409
Antoine Pitrou176f07d2011-06-06 19:35:31 +0200410 .. attribute:: sentinel
411
412 A numeric handle of a system object which will become "ready" when
413 the process ends.
414
Antoine Pitroubdb1cf12012-03-05 19:28:37 +0100415 You can use this value if you want to wait on several events at
416 once using :func:`multiprocessing.connection.wait`. Otherwise
417 calling :meth:`join()` is simpler.
418
Antoine Pitrou176f07d2011-06-06 19:35:31 +0200419 On Windows, this is an OS handle usable with the ``WaitForSingleObject``
420 and ``WaitForMultipleObjects`` family of API calls. On Unix, this is
421 a file descriptor usable with primitives from the :mod:`select` module.
422
Antoine Pitrou176f07d2011-06-06 19:35:31 +0200423 .. versionadded:: 3.3
424
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000425 .. method:: terminate()
Benjamin Petersone711caf2008-06-11 16:44:04 +0000426
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000427 Terminate the process. On Unix this is done using the ``SIGTERM`` signal;
Georg Brandl60203b42010-10-06 10:11:56 +0000428 on Windows :c:func:`TerminateProcess` is used. Note that exit handlers and
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000429 finally clauses, etc., will not be executed.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000430
431 Note that descendant processes of the process will *not* be terminated --
432 they will simply become orphaned.
433
434 .. warning::
435
436 If this method is used when the associated process is using a pipe or
437 queue then the pipe or queue is liable to become corrupted and may
438 become unusable by other process. Similarly, if the process has
439 acquired a lock or semaphore etc. then terminating it is liable to
440 cause other processes to deadlock.
441
Ask Solemff7ffdd2010-11-09 21:52:33 +0000442 Note that the :meth:`start`, :meth:`join`, :meth:`is_alive`,
443 :meth:`terminate` and :attr:`exit_code` methods should only be called by
444 the process that created the process object.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000445
R. David Murray8e8099c2009-04-28 18:02:00 +0000446 Example usage of some of the methods of :class:`Process`:
447
448 .. doctest::
Benjamin Petersone711caf2008-06-11 16:44:04 +0000449
Benjamin Peterson206e3072008-10-19 14:07:49 +0000450 >>> import multiprocessing, time, signal
451 >>> p = multiprocessing.Process(target=time.sleep, args=(1000,))
Georg Brandl49702152008-09-29 06:43:45 +0000452 >>> print(p, p.is_alive())
Benjamin Petersone711caf2008-06-11 16:44:04 +0000453 <Process(Process-1, initial)> False
454 >>> p.start()
Georg Brandl49702152008-09-29 06:43:45 +0000455 >>> print(p, p.is_alive())
Benjamin Petersone711caf2008-06-11 16:44:04 +0000456 <Process(Process-1, started)> True
457 >>> p.terminate()
R. David Murray8e8099c2009-04-28 18:02:00 +0000458 >>> time.sleep(0.1)
Georg Brandl49702152008-09-29 06:43:45 +0000459 >>> print(p, p.is_alive())
Benjamin Petersone711caf2008-06-11 16:44:04 +0000460 <Process(Process-1, stopped[SIGTERM])> False
Benjamin Petersona786b022008-08-25 21:05:21 +0000461 >>> p.exitcode == -signal.SIGTERM
Benjamin Petersone711caf2008-06-11 16:44:04 +0000462 True
463
464
465.. exception:: BufferTooShort
466
467 Exception raised by :meth:`Connection.recv_bytes_into()` when the supplied
468 buffer object is too small for the message read.
469
470 If ``e`` is an instance of :exc:`BufferTooShort` then ``e.args[0]`` will give
471 the message as a byte string.
472
473
474Pipes and Queues
475~~~~~~~~~~~~~~~~
476
477When using multiple processes, one generally uses message passing for
478communication between processes and avoids having to use any synchronization
479primitives like locks.
480
481For passing messages one can use :func:`Pipe` (for a connection between two
482processes) or a queue (which allows multiple producers and consumers).
483
Sandro Tosicd778152012-02-15 23:27:00 +0100484The :class:`Queue`, :class:`SimpleQueue` and :class:`JoinableQueue` types are multi-producer,
Benjamin Peterson257060a2008-06-28 01:42:41 +0000485multi-consumer FIFO queues modelled on the :class:`queue.Queue` class in the
Benjamin Petersone711caf2008-06-11 16:44:04 +0000486standard library. They differ in that :class:`Queue` lacks the
Benjamin Peterson257060a2008-06-28 01:42:41 +0000487:meth:`~queue.Queue.task_done` and :meth:`~queue.Queue.join` methods introduced
488into Python 2.5's :class:`queue.Queue` class.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000489
490If you use :class:`JoinableQueue` then you **must** call
491:meth:`JoinableQueue.task_done` for each task removed from the queue or else the
Eli Benderskyd08effe2011-12-31 07:20:26 +0200492semaphore used to count the number of unfinished tasks may eventually overflow,
Benjamin Petersone711caf2008-06-11 16:44:04 +0000493raising an exception.
494
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000495Note that one can also create a shared queue by using a manager object -- see
496:ref:`multiprocessing-managers`.
497
Benjamin Petersone711caf2008-06-11 16:44:04 +0000498.. note::
499
Benjamin Peterson257060a2008-06-28 01:42:41 +0000500 :mod:`multiprocessing` uses the usual :exc:`queue.Empty` and
501 :exc:`queue.Full` exceptions to signal a timeout. They are not available in
Benjamin Petersone711caf2008-06-11 16:44:04 +0000502 the :mod:`multiprocessing` namespace so you need to import them from
Benjamin Peterson257060a2008-06-28 01:42:41 +0000503 :mod:`queue`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000504
505
506.. warning::
507
508 If a process is killed using :meth:`Process.terminate` or :func:`os.kill`
509 while it is trying to use a :class:`Queue`, then the data in the queue is
Eli Benderskyd08effe2011-12-31 07:20:26 +0200510 likely to become corrupted. This may cause any other process to get an
Benjamin Petersone711caf2008-06-11 16:44:04 +0000511 exception when it tries to use the queue later on.
512
513.. warning::
514
515 As mentioned above, if a child process has put items on a queue (and it has
516 not used :meth:`JoinableQueue.cancel_join_thread`), then that process will
517 not terminate until all buffered items have been flushed to the pipe.
518
519 This means that if you try joining that process you may get a deadlock unless
520 you are sure that all items which have been put on the queue have been
521 consumed. Similarly, if the child process is non-daemonic then the parent
Georg Brandl2ee470f2008-07-16 12:55:28 +0000522 process may hang on exit when it tries to join all its non-daemonic children.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000523
524 Note that a queue created using a manager does not have this issue. See
525 :ref:`multiprocessing-programming`.
526
Benjamin Petersone711caf2008-06-11 16:44:04 +0000527For an example of the usage of queues for interprocess communication see
528:ref:`multiprocessing-examples`.
529
530
531.. function:: Pipe([duplex])
532
533 Returns a pair ``(conn1, conn2)`` of :class:`Connection` objects representing
534 the ends of a pipe.
535
536 If *duplex* is ``True`` (the default) then the pipe is bidirectional. If
537 *duplex* is ``False`` then the pipe is unidirectional: ``conn1`` can only be
538 used for receiving messages and ``conn2`` can only be used for sending
539 messages.
540
541
542.. class:: Queue([maxsize])
543
544 Returns a process shared queue implemented using a pipe and a few
545 locks/semaphores. When a process first puts an item on the queue a feeder
546 thread is started which transfers objects from a buffer into the pipe.
547
Benjamin Peterson257060a2008-06-28 01:42:41 +0000548 The usual :exc:`queue.Empty` and :exc:`queue.Full` exceptions from the
Benjamin Petersone711caf2008-06-11 16:44:04 +0000549 standard library's :mod:`Queue` module are raised to signal timeouts.
550
Benjamin Peterson257060a2008-06-28 01:42:41 +0000551 :class:`Queue` implements all the methods of :class:`queue.Queue` except for
552 :meth:`~queue.Queue.task_done` and :meth:`~queue.Queue.join`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000553
554 .. method:: qsize()
555
556 Return the approximate size of the queue. Because of
557 multithreading/multiprocessing semantics, this number is not reliable.
558
559 Note that this may raise :exc:`NotImplementedError` on Unix platforms like
Georg Brandlc575c902008-09-13 17:46:05 +0000560 Mac OS X where ``sem_getvalue()`` is not implemented.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000561
562 .. method:: empty()
563
564 Return ``True`` if the queue is empty, ``False`` otherwise. Because of
565 multithreading/multiprocessing semantics, this is not reliable.
566
567 .. method:: full()
568
569 Return ``True`` if the queue is full, ``False`` otherwise. Because of
570 multithreading/multiprocessing semantics, this is not reliable.
571
Senthil Kumarane969a212011-09-06 00:21:30 +0800572 .. method:: put(obj[, block[, timeout]])
Benjamin Petersone711caf2008-06-11 16:44:04 +0000573
Senthil Kumarane969a212011-09-06 00:21:30 +0800574 Put obj into the queue. If the optional argument *block* is ``True``
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000575 (the default) and *timeout* is ``None`` (the default), block if necessary until
Benjamin Petersone711caf2008-06-11 16:44:04 +0000576 a free slot is available. If *timeout* is a positive number, it blocks at
Benjamin Peterson257060a2008-06-28 01:42:41 +0000577 most *timeout* seconds and raises the :exc:`queue.Full` exception if no
Benjamin Petersone711caf2008-06-11 16:44:04 +0000578 free slot was available within that time. Otherwise (*block* is
579 ``False``), put an item on the queue if a free slot is immediately
Benjamin Peterson257060a2008-06-28 01:42:41 +0000580 available, else raise the :exc:`queue.Full` exception (*timeout* is
Benjamin Petersone711caf2008-06-11 16:44:04 +0000581 ignored in that case).
582
Senthil Kumarane969a212011-09-06 00:21:30 +0800583 .. method:: put_nowait(obj)
Benjamin Petersone711caf2008-06-11 16:44:04 +0000584
Senthil Kumarane969a212011-09-06 00:21:30 +0800585 Equivalent to ``put(obj, False)``.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000586
587 .. method:: get([block[, timeout]])
588
589 Remove and return an item from the queue. If optional args *block* is
590 ``True`` (the default) and *timeout* is ``None`` (the default), block if
591 necessary until an item is available. If *timeout* is a positive number,
Benjamin Peterson257060a2008-06-28 01:42:41 +0000592 it blocks at most *timeout* seconds and raises the :exc:`queue.Empty`
Benjamin Petersone711caf2008-06-11 16:44:04 +0000593 exception if no item was available within that time. Otherwise (block is
594 ``False``), return an item if one is immediately available, else raise the
Benjamin Peterson257060a2008-06-28 01:42:41 +0000595 :exc:`queue.Empty` exception (*timeout* is ignored in that case).
Benjamin Petersone711caf2008-06-11 16:44:04 +0000596
597 .. method:: get_nowait()
598 get_no_wait()
599
600 Equivalent to ``get(False)``.
601
602 :class:`multiprocessing.Queue` has a few additional methods not found in
Georg Brandl2ee470f2008-07-16 12:55:28 +0000603 :class:`queue.Queue`. These methods are usually unnecessary for most
604 code:
Benjamin Petersone711caf2008-06-11 16:44:04 +0000605
606 .. method:: close()
607
608 Indicate that no more data will be put on this queue by the current
609 process. The background thread will quit once it has flushed all buffered
610 data to the pipe. This is called automatically when the queue is garbage
611 collected.
612
613 .. method:: join_thread()
614
615 Join the background thread. This can only be used after :meth:`close` has
616 been called. It blocks until the background thread exits, ensuring that
617 all data in the buffer has been flushed to the pipe.
618
619 By default if a process is not the creator of the queue then on exit it
620 will attempt to join the queue's background thread. The process can call
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000621 :meth:`cancel_join_thread` to make :meth:`join_thread` do nothing.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000622
623 .. method:: cancel_join_thread()
624
625 Prevent :meth:`join_thread` from blocking. In particular, this prevents
626 the background thread from being joined automatically when the process
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000627 exits -- see :meth:`join_thread`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000628
629
Sandro Tosicd778152012-02-15 23:27:00 +0100630.. class:: SimpleQueue()
Sandro Tosi5cb522c2012-02-15 23:14:21 +0100631
632 It is a simplified :class:`Queue` type, very close to a locked :class:`Pipe`.
633
634 .. method:: empty()
635
636 Return ``True`` if the queue is empty, ``False`` otherwise.
637
638 .. method:: get()
639
640 Remove and return an item from the queue.
641
642 .. method:: put(item)
643
644 Put *item* into the queue.
645
646
Benjamin Petersone711caf2008-06-11 16:44:04 +0000647.. class:: JoinableQueue([maxsize])
648
649 :class:`JoinableQueue`, a :class:`Queue` subclass, is a queue which
650 additionally has :meth:`task_done` and :meth:`join` methods.
651
652 .. method:: task_done()
653
654 Indicate that a formerly enqueued task is complete. Used by queue consumer
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000655 threads. For each :meth:`~Queue.get` used to fetch a task, a subsequent
656 call to :meth:`task_done` tells the queue that the processing on the task
657 is complete.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000658
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000659 If a :meth:`~Queue.join` is currently blocking, it will resume when all
660 items have been processed (meaning that a :meth:`task_done` call was
661 received for every item that had been :meth:`~Queue.put` into the queue).
Benjamin Petersone711caf2008-06-11 16:44:04 +0000662
663 Raises a :exc:`ValueError` if called more times than there were items
664 placed in the queue.
665
666
667 .. method:: join()
668
669 Block until all items in the queue have been gotten and processed.
670
671 The count of unfinished tasks goes up whenever an item is added to the
672 queue. The count goes down whenever a consumer thread calls
673 :meth:`task_done` to indicate that the item was retrieved and all work on
674 it is complete. When the count of unfinished tasks drops to zero,
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000675 :meth:`~Queue.join` unblocks.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000676
677
678Miscellaneous
679~~~~~~~~~~~~~
680
681.. function:: active_children()
682
683 Return list of all live children of the current process.
684
685 Calling this has the side affect of "joining" any processes which have
686 already finished.
687
688.. function:: cpu_count()
689
690 Return the number of CPUs in the system. May raise
691 :exc:`NotImplementedError`.
692
693.. function:: current_process()
694
695 Return the :class:`Process` object corresponding to the current process.
696
697 An analogue of :func:`threading.current_thread`.
698
699.. function:: freeze_support()
700
701 Add support for when a program which uses :mod:`multiprocessing` has been
702 frozen to produce a Windows executable. (Has been tested with **py2exe**,
703 **PyInstaller** and **cx_Freeze**.)
704
705 One needs to call this function straight after the ``if __name__ ==
706 '__main__'`` line of the main module. For example::
707
708 from multiprocessing import Process, freeze_support
709
710 def f():
Georg Brandl49702152008-09-29 06:43:45 +0000711 print('hello world!')
Benjamin Petersone711caf2008-06-11 16:44:04 +0000712
713 if __name__ == '__main__':
714 freeze_support()
715 Process(target=f).start()
716
R. David Murray8e8099c2009-04-28 18:02:00 +0000717 If the ``freeze_support()`` line is omitted then trying to run the frozen
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000718 executable will raise :exc:`RuntimeError`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000719
720 If the module is being run normally by the Python interpreter then
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000721 :func:`freeze_support` has no effect.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000722
723.. function:: set_executable()
724
Ezio Melotti0639d5a2009-12-19 23:26:38 +0000725 Sets the path of the Python interpreter to use when starting a child process.
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000726 (By default :data:`sys.executable` is used). Embedders will probably need to
727 do some thing like ::
Benjamin Petersone711caf2008-06-11 16:44:04 +0000728
Eli Benderskyd08effe2011-12-31 07:20:26 +0200729 set_executable(os.path.join(sys.exec_prefix, 'pythonw.exe'))
Benjamin Petersone711caf2008-06-11 16:44:04 +0000730
R. David Murray8e8099c2009-04-28 18:02:00 +0000731 before they can create child processes. (Windows only)
Benjamin Petersone711caf2008-06-11 16:44:04 +0000732
733
734.. note::
735
736 :mod:`multiprocessing` contains no analogues of
737 :func:`threading.active_count`, :func:`threading.enumerate`,
738 :func:`threading.settrace`, :func:`threading.setprofile`,
739 :class:`threading.Timer`, or :class:`threading.local`.
740
741
742Connection Objects
743~~~~~~~~~~~~~~~~~~
744
745Connection objects allow the sending and receiving of picklable objects or
746strings. They can be thought of as message oriented connected sockets.
747
Eli Benderskyd08effe2011-12-31 07:20:26 +0200748Connection objects are usually created using :func:`Pipe` -- see also
Benjamin Petersone711caf2008-06-11 16:44:04 +0000749:ref:`multiprocessing-listeners-clients`.
750
751.. class:: Connection
752
753 .. method:: send(obj)
754
755 Send an object to the other end of the connection which should be read
756 using :meth:`recv`.
757
Benjamin Peterson965ce872009-04-05 21:24:58 +0000758 The object must be picklable. Very large pickles (approximately 32 MB+,
759 though it depends on the OS) may raise a ValueError exception.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000760
761 .. method:: recv()
762
763 Return an object sent from the other end of the connection using
Sandro Tosib52e7a92012-01-07 17:56:58 +0100764 :meth:`send`. Blocks until there its something to receive. Raises
765 :exc:`EOFError` if there is nothing left to receive
Benjamin Petersone711caf2008-06-11 16:44:04 +0000766 and the other end was closed.
767
768 .. method:: fileno()
769
Eli Benderskyd08effe2011-12-31 07:20:26 +0200770 Return the file descriptor or handle used by the connection.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000771
772 .. method:: close()
773
774 Close the connection.
775
776 This is called automatically when the connection is garbage collected.
777
778 .. method:: poll([timeout])
779
780 Return whether there is any data available to be read.
781
782 If *timeout* is not specified then it will return immediately. If
783 *timeout* is a number then this specifies the maximum time in seconds to
784 block. If *timeout* is ``None`` then an infinite timeout is used.
785
Antoine Pitroubdb1cf12012-03-05 19:28:37 +0100786 Note that multiple connection objects may be polled at once by
787 using :func:`multiprocessing.connection.wait`.
788
Benjamin Petersone711caf2008-06-11 16:44:04 +0000789 .. method:: send_bytes(buffer[, offset[, size]])
790
791 Send byte data from an object supporting the buffer interface as a
792 complete message.
793
794 If *offset* is given then data is read from that position in *buffer*. If
Benjamin Peterson965ce872009-04-05 21:24:58 +0000795 *size* is given then that many bytes will be read from buffer. Very large
796 buffers (approximately 32 MB+, though it depends on the OS) may raise a
Eli Benderskyd08effe2011-12-31 07:20:26 +0200797 :exc:`ValueError` exception
Benjamin Petersone711caf2008-06-11 16:44:04 +0000798
799 .. method:: recv_bytes([maxlength])
800
801 Return a complete message of byte data sent from the other end of the
Sandro Tosib52e7a92012-01-07 17:56:58 +0100802 connection as a string. Blocks until there is something to receive.
803 Raises :exc:`EOFError` if there is nothing left
Benjamin Petersone711caf2008-06-11 16:44:04 +0000804 to receive and the other end has closed.
805
806 If *maxlength* is specified and the message is longer than *maxlength*
Antoine Pitrou62ab10a02011-10-12 20:10:51 +0200807 then :exc:`OSError` is raised and the connection will no longer be
Benjamin Petersone711caf2008-06-11 16:44:04 +0000808 readable.
809
Antoine Pitrou62ab10a02011-10-12 20:10:51 +0200810 .. versionchanged:: 3.3
811 This function used to raise a :exc:`IOError`, which is now an
812 alias of :exc:`OSError`.
813
814
Benjamin Petersone711caf2008-06-11 16:44:04 +0000815 .. method:: recv_bytes_into(buffer[, offset])
816
817 Read into *buffer* a complete message of byte data sent from the other end
Sandro Tosib52e7a92012-01-07 17:56:58 +0100818 of the connection and return the number of bytes in the message. Blocks
819 until there is something to receive. Raises
Benjamin Petersone711caf2008-06-11 16:44:04 +0000820 :exc:`EOFError` if there is nothing left to receive and the other end was
821 closed.
822
823 *buffer* must be an object satisfying the writable buffer interface. If
824 *offset* is given then the message will be written into the buffer from
R. David Murray8e8099c2009-04-28 18:02:00 +0000825 that position. Offset must be a non-negative integer less than the
826 length of *buffer* (in bytes).
Benjamin Petersone711caf2008-06-11 16:44:04 +0000827
828 If the buffer is too short then a :exc:`BufferTooShort` exception is
829 raised and the complete message is available as ``e.args[0]`` where ``e``
830 is the exception instance.
831
Antoine Pitrou5438ed12012-04-24 22:56:57 +0200832 .. versionchanged:: 3.3
833 Connection objects themselves can now be transferred between processes
834 using :meth:`Connection.send` and :meth:`Connection.recv`.
835
Richard Oudkerkd69cfe82012-06-18 17:47:52 +0100836 .. versionadded:: 3.3
837 Connection objects now support the context manager protocol -- see
838 :ref:`typecontextmanager`. :meth:`__enter__` returns the
839 connection object, and :meth:`__exit__` calls :meth:`close`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000840
841For example:
842
R. David Murray8e8099c2009-04-28 18:02:00 +0000843.. doctest::
844
Benjamin Petersone711caf2008-06-11 16:44:04 +0000845 >>> from multiprocessing import Pipe
846 >>> a, b = Pipe()
847 >>> a.send([1, 'hello', None])
848 >>> b.recv()
849 [1, 'hello', None]
Georg Brandl30176892010-10-29 05:22:17 +0000850 >>> b.send_bytes(b'thank you')
Benjamin Petersone711caf2008-06-11 16:44:04 +0000851 >>> a.recv_bytes()
Georg Brandl30176892010-10-29 05:22:17 +0000852 b'thank you'
Benjamin Petersone711caf2008-06-11 16:44:04 +0000853 >>> import array
854 >>> arr1 = array.array('i', range(5))
855 >>> arr2 = array.array('i', [0] * 10)
856 >>> a.send_bytes(arr1)
857 >>> count = b.recv_bytes_into(arr2)
858 >>> assert count == len(arr1) * arr1.itemsize
859 >>> arr2
860 array('i', [0, 1, 2, 3, 4, 0, 0, 0, 0, 0])
861
862
863.. warning::
864
865 The :meth:`Connection.recv` method automatically unpickles the data it
866 receives, which can be a security risk unless you can trust the process
867 which sent the message.
868
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000869 Therefore, unless the connection object was produced using :func:`Pipe` you
870 should only use the :meth:`~Connection.recv` and :meth:`~Connection.send`
871 methods after performing some sort of authentication. See
872 :ref:`multiprocessing-auth-keys`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000873
874.. warning::
875
876 If a process is killed while it is trying to read or write to a pipe then
877 the data in the pipe is likely to become corrupted, because it may become
878 impossible to be sure where the message boundaries lie.
879
880
881Synchronization primitives
882~~~~~~~~~~~~~~~~~~~~~~~~~~
883
884Generally synchronization primitives are not as necessary in a multiprocess
Georg Brandl2ee470f2008-07-16 12:55:28 +0000885program as they are in a multithreaded program. See the documentation for
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000886:mod:`threading` module.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000887
888Note that one can also create synchronization primitives by using a manager
889object -- see :ref:`multiprocessing-managers`.
890
Richard Oudkerk3730a172012-06-15 18:26:07 +0100891.. class:: Barrier(parties[, action[, timeout]])
892
893 A barrier object: a clone of :class:`threading.Barrier`.
894
895 .. versionadded:: 3.3
896
Benjamin Petersone711caf2008-06-11 16:44:04 +0000897.. class:: BoundedSemaphore([value])
898
899 A bounded semaphore object: a clone of :class:`threading.BoundedSemaphore`.
900
Georg Brandl592296e2010-05-21 21:48:27 +0000901 (On Mac OS X, this is indistinguishable from :class:`Semaphore` because
Benjamin Petersone711caf2008-06-11 16:44:04 +0000902 ``sem_getvalue()`` is not implemented on that platform).
903
904.. class:: Condition([lock])
905
Benjamin Peterson5289b2b2008-06-28 00:40:54 +0000906 A condition variable: a clone of :class:`threading.Condition`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000907
908 If *lock* is specified then it should be a :class:`Lock` or :class:`RLock`
909 object from :mod:`multiprocessing`.
910
Charles-François Natalic8ce7152012-04-17 18:45:57 +0200911 .. versionchanged:: 3.3
912 The :meth:`wait_for` method was added.
913
Benjamin Petersone711caf2008-06-11 16:44:04 +0000914.. class:: Event()
915
916 A clone of :class:`threading.Event`.
Benjamin Peterson965ce872009-04-05 21:24:58 +0000917 This method returns the state of the internal semaphore on exit, so it
918 will always return ``True`` except if a timeout is given and the operation
919 times out.
920
Raymond Hettinger35a88362009-04-09 00:08:24 +0000921 .. versionchanged:: 3.1
Benjamin Peterson965ce872009-04-05 21:24:58 +0000922 Previously, the method always returned ``None``.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000923
924.. class:: Lock()
925
926 A non-recursive lock object: a clone of :class:`threading.Lock`.
927
928.. class:: RLock()
929
930 A recursive lock object: a clone of :class:`threading.RLock`.
931
932.. class:: Semaphore([value])
933
Ross Lagerwall8fea2e62011-03-14 10:40:15 +0200934 A semaphore object: a clone of :class:`threading.Semaphore`.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000935
936.. note::
937
Richard Oudkerk59d54042012-05-10 16:11:12 +0100938 The :meth:`acquire` and :meth:`wait` methods of each of these types
939 treat negative timeouts as zero timeouts. This differs from
940 :mod:`threading` where, since version 3.2, the equivalent
941 :meth:`acquire` methods treat negative timeouts as infinite
942 timeouts.
943
Georg Brandl592296e2010-05-21 21:48:27 +0000944 On Mac OS X, ``sem_timedwait`` is unsupported, so calling ``acquire()`` with
945 a timeout will emulate that function's behavior using a sleeping loop.
Benjamin Petersone711caf2008-06-11 16:44:04 +0000946
947.. note::
948
949 If the SIGINT signal generated by Ctrl-C arrives while the main thread is
950 blocked by a call to :meth:`BoundedSemaphore.acquire`, :meth:`Lock.acquire`,
951 :meth:`RLock.acquire`, :meth:`Semaphore.acquire`, :meth:`Condition.acquire`
952 or :meth:`Condition.wait` then the call will be immediately interrupted and
953 :exc:`KeyboardInterrupt` will be raised.
954
955 This differs from the behaviour of :mod:`threading` where SIGINT will be
956 ignored while the equivalent blocking calls are in progress.
957
958
959Shared :mod:`ctypes` Objects
960~~~~~~~~~~~~~~~~~~~~~~~~~~~~
961
962It is possible to create shared objects using shared memory which can be
963inherited by child processes.
964
Richard Oudkerk87ea7802012-05-29 12:01:47 +0100965.. function:: Value(typecode_or_type, *args, lock=True)
Benjamin Petersone711caf2008-06-11 16:44:04 +0000966
967 Return a :mod:`ctypes` object allocated from shared memory. By default the
968 return value is actually a synchronized wrapper for the object.
969
970 *typecode_or_type* determines the type of the returned object: it is either a
971 ctypes type or a one character typecode of the kind used by the :mod:`array`
972 module. *\*args* is passed on to the constructor for the type.
973
974 If *lock* is ``True`` (the default) then a new lock object is created to
975 synchronize access to the value. If *lock* is a :class:`Lock` or
976 :class:`RLock` object then that will be used to synchronize access to the
977 value. If *lock* is ``False`` then access to the returned object will not be
978 automatically protected by a lock, so it will not necessarily be
979 "process-safe".
980
981 Note that *lock* is a keyword-only argument.
982
983.. function:: Array(typecode_or_type, size_or_initializer, *, lock=True)
984
985 Return a ctypes array allocated from shared memory. By default the return
986 value is actually a synchronized wrapper for the array.
987
988 *typecode_or_type* determines the type of the elements of the returned array:
989 it is either a ctypes type or a one character typecode of the kind used by
990 the :mod:`array` module. If *size_or_initializer* is an integer, then it
991 determines the length of the array, and the array will be initially zeroed.
992 Otherwise, *size_or_initializer* is a sequence which is used to initialize
993 the array and whose length determines the length of the array.
994
995 If *lock* is ``True`` (the default) then a new lock object is created to
996 synchronize access to the value. If *lock* is a :class:`Lock` or
997 :class:`RLock` object then that will be used to synchronize access to the
998 value. If *lock* is ``False`` then access to the returned object will not be
999 automatically protected by a lock, so it will not necessarily be
1000 "process-safe".
1001
1002 Note that *lock* is a keyword only argument.
1003
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001004 Note that an array of :data:`ctypes.c_char` has *value* and *raw*
Benjamin Petersone711caf2008-06-11 16:44:04 +00001005 attributes which allow one to use it to store and retrieve strings.
1006
1007
1008The :mod:`multiprocessing.sharedctypes` module
1009>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1010
1011.. module:: multiprocessing.sharedctypes
1012 :synopsis: Allocate ctypes objects from shared memory.
1013
1014The :mod:`multiprocessing.sharedctypes` module provides functions for allocating
1015:mod:`ctypes` objects from shared memory which can be inherited by child
1016processes.
1017
1018.. note::
1019
Georg Brandl2ee470f2008-07-16 12:55:28 +00001020 Although it is possible to store a pointer in shared memory remember that
1021 this will refer to a location in the address space of a specific process.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001022 However, the pointer is quite likely to be invalid in the context of a second
1023 process and trying to dereference the pointer from the second process may
1024 cause a crash.
1025
1026.. function:: RawArray(typecode_or_type, size_or_initializer)
1027
1028 Return a ctypes array allocated from shared memory.
1029
1030 *typecode_or_type* determines the type of the elements of the returned array:
1031 it is either a ctypes type or a one character typecode of the kind used by
1032 the :mod:`array` module. If *size_or_initializer* is an integer then it
1033 determines the length of the array, and the array will be initially zeroed.
1034 Otherwise *size_or_initializer* is a sequence which is used to initialize the
1035 array and whose length determines the length of the array.
1036
1037 Note that setting and getting an element is potentially non-atomic -- use
1038 :func:`Array` instead to make sure that access is automatically synchronized
1039 using a lock.
1040
1041.. function:: RawValue(typecode_or_type, *args)
1042
1043 Return a ctypes object allocated from shared memory.
1044
1045 *typecode_or_type* determines the type of the returned object: it is either a
1046 ctypes type or a one character typecode of the kind used by the :mod:`array`
Jesse Nollerb0516a62009-01-18 03:11:38 +00001047 module. *\*args* is passed on to the constructor for the type.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001048
1049 Note that setting and getting the value is potentially non-atomic -- use
1050 :func:`Value` instead to make sure that access is automatically synchronized
1051 using a lock.
1052
Amaury Forgeot d'Arcb0c29162008-11-22 22:18:04 +00001053 Note that an array of :data:`ctypes.c_char` has ``value`` and ``raw``
Benjamin Petersone711caf2008-06-11 16:44:04 +00001054 attributes which allow one to use it to store and retrieve strings -- see
1055 documentation for :mod:`ctypes`.
1056
Richard Oudkerk87ea7802012-05-29 12:01:47 +01001057.. function:: Array(typecode_or_type, size_or_initializer, *, lock=True)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001058
1059 The same as :func:`RawArray` except that depending on the value of *lock* a
1060 process-safe synchronization wrapper may be returned instead of a raw ctypes
1061 array.
1062
1063 If *lock* is ``True`` (the default) then a new lock object is created to
1064 synchronize access to the value. If *lock* is a :class:`Lock` or
1065 :class:`RLock` object then that will be used to synchronize access to the
1066 value. If *lock* is ``False`` then access to the returned object will not be
1067 automatically protected by a lock, so it will not necessarily be
1068 "process-safe".
1069
1070 Note that *lock* is a keyword-only argument.
1071
Richard Oudkerk87ea7802012-05-29 12:01:47 +01001072.. function:: Value(typecode_or_type, *args, lock=True)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001073
1074 The same as :func:`RawValue` except that depending on the value of *lock* a
1075 process-safe synchronization wrapper may be returned instead of a raw ctypes
1076 object.
1077
1078 If *lock* is ``True`` (the default) then a new lock object is created to
1079 synchronize access to the value. If *lock* is a :class:`Lock` or
1080 :class:`RLock` object then that will be used to synchronize access to the
1081 value. If *lock* is ``False`` then access to the returned object will not be
1082 automatically protected by a lock, so it will not necessarily be
1083 "process-safe".
1084
1085 Note that *lock* is a keyword-only argument.
1086
1087.. function:: copy(obj)
1088
1089 Return a ctypes object allocated from shared memory which is a copy of the
1090 ctypes object *obj*.
1091
1092.. function:: synchronized(obj[, lock])
1093
1094 Return a process-safe wrapper object for a ctypes object which uses *lock* to
1095 synchronize access. If *lock* is ``None`` (the default) then a
1096 :class:`multiprocessing.RLock` object is created automatically.
1097
1098 A synchronized wrapper will have two methods in addition to those of the
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001099 object it wraps: :meth:`get_obj` returns the wrapped object and
1100 :meth:`get_lock` returns the lock object used for synchronization.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001101
1102 Note that accessing the ctypes object through the wrapper can be a lot slower
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001103 than accessing the raw ctypes object.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001104
1105
1106The table below compares the syntax for creating shared ctypes objects from
1107shared memory with the normal ctypes syntax. (In the table ``MyStruct`` is some
1108subclass of :class:`ctypes.Structure`.)
1109
1110==================== ========================== ===========================
1111ctypes sharedctypes using type sharedctypes using typecode
1112==================== ========================== ===========================
1113c_double(2.4) RawValue(c_double, 2.4) RawValue('d', 2.4)
1114MyStruct(4, 6) RawValue(MyStruct, 4, 6)
1115(c_short * 7)() RawArray(c_short, 7) RawArray('h', 7)
1116(c_int * 3)(9, 2, 8) RawArray(c_int, (9, 2, 8)) RawArray('i', (9, 2, 8))
1117==================== ========================== ===========================
1118
1119
1120Below is an example where a number of ctypes objects are modified by a child
1121process::
1122
1123 from multiprocessing import Process, Lock
1124 from multiprocessing.sharedctypes import Value, Array
1125 from ctypes import Structure, c_double
1126
1127 class Point(Structure):
1128 _fields_ = [('x', c_double), ('y', c_double)]
1129
1130 def modify(n, x, s, A):
1131 n.value **= 2
1132 x.value **= 2
1133 s.value = s.value.upper()
1134 for a in A:
1135 a.x **= 2
1136 a.y **= 2
1137
1138 if __name__ == '__main__':
1139 lock = Lock()
1140
1141 n = Value('i', 7)
R. David Murray8e8099c2009-04-28 18:02:00 +00001142 x = Value(c_double, 1.0/3.0, lock=False)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001143 s = Array('c', 'hello world', lock=lock)
1144 A = Array(Point, [(1.875,-6.25), (-5.75,2.0), (2.375,9.5)], lock=lock)
1145
1146 p = Process(target=modify, args=(n, x, s, A))
1147 p.start()
1148 p.join()
1149
Georg Brandl49702152008-09-29 06:43:45 +00001150 print(n.value)
1151 print(x.value)
1152 print(s.value)
1153 print([(a.x, a.y) for a in A])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001154
1155
Georg Brandl49702152008-09-29 06:43:45 +00001156.. highlight:: none
Benjamin Petersone711caf2008-06-11 16:44:04 +00001157
1158The results printed are ::
1159
1160 49
1161 0.1111111111111111
1162 HELLO WORLD
1163 [(3.515625, 39.0625), (33.0625, 4.0), (5.640625, 90.25)]
1164
Ezio Melottif86b28e2012-04-13 20:50:48 -06001165.. highlight:: python3
Benjamin Petersone711caf2008-06-11 16:44:04 +00001166
1167
1168.. _multiprocessing-managers:
1169
1170Managers
1171~~~~~~~~
1172
1173Managers provide a way to create data which can be shared between different
1174processes. A manager object controls a server process which manages *shared
1175objects*. Other processes can access the shared objects by using proxies.
1176
1177.. function:: multiprocessing.Manager()
1178
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001179 Returns a started :class:`~multiprocessing.managers.SyncManager` object which
1180 can be used for sharing objects between processes. The returned manager
1181 object corresponds to a spawned child process and has methods which will
1182 create shared objects and return corresponding proxies.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001183
1184.. module:: multiprocessing.managers
1185 :synopsis: Share data between process with shared objects.
1186
1187Manager processes will be shutdown as soon as they are garbage collected or
1188their parent process exits. The manager classes are defined in the
1189:mod:`multiprocessing.managers` module:
1190
1191.. class:: BaseManager([address[, authkey]])
1192
1193 Create a BaseManager object.
1194
Benjamin Peterson21896a32010-03-21 22:03:03 +00001195 Once created one should call :meth:`start` or ``get_server().serve_forever()`` to ensure
Benjamin Petersone711caf2008-06-11 16:44:04 +00001196 that the manager object refers to a started manager process.
1197
1198 *address* is the address on which the manager process listens for new
1199 connections. If *address* is ``None`` then an arbitrary one is chosen.
1200
1201 *authkey* is the authentication key which will be used to check the validity
1202 of incoming connections to the server process. If *authkey* is ``None`` then
Benjamin Petersona786b022008-08-25 21:05:21 +00001203 ``current_process().authkey``. Otherwise *authkey* is used and it
Benjamin Petersone711caf2008-06-11 16:44:04 +00001204 must be a string.
1205
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001206 .. method:: start([initializer[, initargs]])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001207
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001208 Start a subprocess to start the manager. If *initializer* is not ``None``
1209 then the subprocess will call ``initializer(*initargs)`` when it starts.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001210
Jesse Noller45239682008-11-28 18:46:19 +00001211 .. method:: get_server()
Georg Brandl48310cd2009-01-03 21:18:54 +00001212
Jesse Noller45239682008-11-28 18:46:19 +00001213 Returns a :class:`Server` object which represents the actual server under
Georg Brandl48310cd2009-01-03 21:18:54 +00001214 the control of the Manager. The :class:`Server` object supports the
R. David Murray8e8099c2009-04-28 18:02:00 +00001215 :meth:`serve_forever` method::
Georg Brandl48310cd2009-01-03 21:18:54 +00001216
Georg Brandl1f01deb2009-01-03 22:47:39 +00001217 >>> from multiprocessing.managers import BaseManager
R. David Murray8e8099c2009-04-28 18:02:00 +00001218 >>> manager = BaseManager(address=('', 50000), authkey='abc')
1219 >>> server = manager.get_server()
1220 >>> server.serve_forever()
Georg Brandl48310cd2009-01-03 21:18:54 +00001221
R. David Murray8e8099c2009-04-28 18:02:00 +00001222 :class:`Server` additionally has an :attr:`address` attribute.
Jesse Noller45239682008-11-28 18:46:19 +00001223
1224 .. method:: connect()
Georg Brandl48310cd2009-01-03 21:18:54 +00001225
R. David Murray8e8099c2009-04-28 18:02:00 +00001226 Connect a local manager object to a remote manager process::
Georg Brandl48310cd2009-01-03 21:18:54 +00001227
Jesse Noller45239682008-11-28 18:46:19 +00001228 >>> from multiprocessing.managers import BaseManager
R. David Murray8e8099c2009-04-28 18:02:00 +00001229 >>> m = BaseManager(address=('127.0.0.1', 5000), authkey='abc')
Jesse Noller45239682008-11-28 18:46:19 +00001230 >>> m.connect()
1231
Benjamin Petersone711caf2008-06-11 16:44:04 +00001232 .. method:: shutdown()
1233
1234 Stop the process used by the manager. This is only available if
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001235 :meth:`start` has been used to start the server process.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001236
1237 This can be called multiple times.
1238
1239 .. method:: register(typeid[, callable[, proxytype[, exposed[, method_to_typeid[, create_method]]]]])
1240
1241 A classmethod which can be used for registering a type or callable with
1242 the manager class.
1243
1244 *typeid* is a "type identifier" which is used to identify a particular
1245 type of shared object. This must be a string.
1246
1247 *callable* is a callable used for creating objects for this type
Richard Oudkerkf0604fd2012-06-11 17:56:08 +01001248 identifier. If a manager instance will be connected to the
1249 server using the :meth:`connect` method, or if the
1250 *create_method* argument is ``False`` then this can be left as
1251 ``None``.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001252
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001253 *proxytype* is a subclass of :class:`BaseProxy` which is used to create
1254 proxies for shared objects with this *typeid*. If ``None`` then a proxy
1255 class is created automatically.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001256
1257 *exposed* is used to specify a sequence of method names which proxies for
1258 this typeid should be allowed to access using
1259 :meth:`BaseProxy._callMethod`. (If *exposed* is ``None`` then
1260 :attr:`proxytype._exposed_` is used instead if it exists.) In the case
1261 where no exposed list is specified, all "public methods" of the shared
1262 object will be accessible. (Here a "public method" means any attribute
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001263 which has a :meth:`__call__` method and whose name does not begin with
Benjamin Petersone711caf2008-06-11 16:44:04 +00001264 ``'_'``.)
1265
1266 *method_to_typeid* is a mapping used to specify the return type of those
1267 exposed methods which should return a proxy. It maps method names to
1268 typeid strings. (If *method_to_typeid* is ``None`` then
1269 :attr:`proxytype._method_to_typeid_` is used instead if it exists.) If a
1270 method's name is not a key of this mapping or if the mapping is ``None``
1271 then the object returned by the method will be copied by value.
1272
1273 *create_method* determines whether a method should be created with name
1274 *typeid* which can be used to tell the server process to create a new
1275 shared object and return a proxy for it. By default it is ``True``.
1276
1277 :class:`BaseManager` instances also have one read-only property:
1278
1279 .. attribute:: address
1280
1281 The address used by the manager.
1282
Richard Oudkerkac385712012-06-18 21:29:30 +01001283 .. versionchanged:: 3.3
1284 Manager objects support the context manager protocol -- see
1285 :ref:`typecontextmanager`. :meth:`__enter__` starts the server
1286 process (if it has not already started) and then returns the
1287 manager object. :meth:`__exit__` calls :meth:`shutdown`.
1288
1289 In previous versions :meth:`__enter__` did not start the
1290 manager's server process if it was not already started.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001291
1292.. class:: SyncManager
1293
1294 A subclass of :class:`BaseManager` which can be used for the synchronization
1295 of processes. Objects of this type are returned by
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001296 :func:`multiprocessing.Manager`.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001297
1298 It also supports creation of shared lists and dictionaries.
1299
Richard Oudkerk3730a172012-06-15 18:26:07 +01001300 .. method:: Barrier(parties[, action[, timeout]])
1301
1302 Create a shared :class:`threading.Barrier` object and return a
1303 proxy for it.
1304
1305 .. versionadded:: 3.3
1306
Benjamin Petersone711caf2008-06-11 16:44:04 +00001307 .. method:: BoundedSemaphore([value])
1308
1309 Create a shared :class:`threading.BoundedSemaphore` object and return a
1310 proxy for it.
1311
1312 .. method:: Condition([lock])
1313
1314 Create a shared :class:`threading.Condition` object and return a proxy for
1315 it.
1316
1317 If *lock* is supplied then it should be a proxy for a
1318 :class:`threading.Lock` or :class:`threading.RLock` object.
1319
Charles-François Natalic8ce7152012-04-17 18:45:57 +02001320 .. versionchanged:: 3.3
1321 The :meth:`wait_for` method was added.
1322
Benjamin Petersone711caf2008-06-11 16:44:04 +00001323 .. method:: Event()
1324
1325 Create a shared :class:`threading.Event` object and return a proxy for it.
1326
1327 .. method:: Lock()
1328
1329 Create a shared :class:`threading.Lock` object and return a proxy for it.
1330
1331 .. method:: Namespace()
1332
1333 Create a shared :class:`Namespace` object and return a proxy for it.
1334
1335 .. method:: Queue([maxsize])
1336
Benjamin Peterson257060a2008-06-28 01:42:41 +00001337 Create a shared :class:`queue.Queue` object and return a proxy for it.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001338
1339 .. method:: RLock()
1340
1341 Create a shared :class:`threading.RLock` object and return a proxy for it.
1342
1343 .. method:: Semaphore([value])
1344
1345 Create a shared :class:`threading.Semaphore` object and return a proxy for
1346 it.
1347
1348 .. method:: Array(typecode, sequence)
1349
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001350 Create an array and return a proxy for it.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001351
1352 .. method:: Value(typecode, value)
1353
1354 Create an object with a writable ``value`` attribute and return a proxy
1355 for it.
1356
1357 .. method:: dict()
1358 dict(mapping)
1359 dict(sequence)
1360
1361 Create a shared ``dict`` object and return a proxy for it.
1362
1363 .. method:: list()
1364 list(sequence)
1365
1366 Create a shared ``list`` object and return a proxy for it.
1367
Georg Brandl3ed41142010-10-15 16:19:43 +00001368 .. note::
1369
1370 Modifications to mutable values or items in dict and list proxies will not
1371 be propagated through the manager, because the proxy has no way of knowing
1372 when its values or items are modified. To modify such an item, you can
1373 re-assign the modified object to the container proxy::
1374
1375 # create a list proxy and append a mutable object (a dictionary)
1376 lproxy = manager.list()
1377 lproxy.append({})
1378 # now mutate the dictionary
1379 d = lproxy[0]
1380 d['a'] = 1
1381 d['b'] = 2
1382 # at this point, the changes to d are not yet synced, but by
1383 # reassigning the dictionary, the proxy is notified of the change
1384 lproxy[0] = d
1385
Benjamin Petersone711caf2008-06-11 16:44:04 +00001386
1387Namespace objects
1388>>>>>>>>>>>>>>>>>
1389
1390A namespace object has no public methods, but does have writable attributes.
1391Its representation shows the values of its attributes.
1392
1393However, when using a proxy for a namespace object, an attribute beginning with
R. David Murray8e8099c2009-04-28 18:02:00 +00001394``'_'`` will be an attribute of the proxy and not an attribute of the referent:
1395
1396.. doctest::
Benjamin Petersone711caf2008-06-11 16:44:04 +00001397
1398 >>> manager = multiprocessing.Manager()
1399 >>> Global = manager.Namespace()
1400 >>> Global.x = 10
1401 >>> Global.y = 'hello'
1402 >>> Global._z = 12.3 # this is an attribute of the proxy
Georg Brandl49702152008-09-29 06:43:45 +00001403 >>> print(Global)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001404 Namespace(x=10, y='hello')
1405
1406
1407Customized managers
1408>>>>>>>>>>>>>>>>>>>
1409
1410To create one's own manager, one creates a subclass of :class:`BaseManager` and
Eli Benderskyd08effe2011-12-31 07:20:26 +02001411uses the :meth:`~BaseManager.register` classmethod to register new types or
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001412callables with the manager class. For example::
Benjamin Petersone711caf2008-06-11 16:44:04 +00001413
1414 from multiprocessing.managers import BaseManager
1415
Éric Araujo28053fb2010-11-22 03:09:19 +00001416 class MathsClass:
Benjamin Petersone711caf2008-06-11 16:44:04 +00001417 def add(self, x, y):
1418 return x + y
1419 def mul(self, x, y):
1420 return x * y
1421
1422 class MyManager(BaseManager):
1423 pass
1424
1425 MyManager.register('Maths', MathsClass)
1426
1427 if __name__ == '__main__':
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001428 with MyManager() as manager:
1429 maths = manager.Maths()
1430 print(maths.add(4, 3)) # prints 7
1431 print(maths.mul(7, 8)) # prints 56
Benjamin Petersone711caf2008-06-11 16:44:04 +00001432
1433
1434Using a remote manager
1435>>>>>>>>>>>>>>>>>>>>>>
1436
1437It is possible to run a manager server on one machine and have clients use it
1438from other machines (assuming that the firewalls involved allow it).
1439
1440Running the following commands creates a server for a single shared queue which
1441remote clients can access::
1442
1443 >>> from multiprocessing.managers import BaseManager
Benjamin Peterson257060a2008-06-28 01:42:41 +00001444 >>> import queue
1445 >>> queue = queue.Queue()
Benjamin Petersone711caf2008-06-11 16:44:04 +00001446 >>> class QueueManager(BaseManager): pass
Jesse Noller45239682008-11-28 18:46:19 +00001447 >>> QueueManager.register('get_queue', callable=lambda:queue)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001448 >>> m = QueueManager(address=('', 50000), authkey='abracadabra')
Jesse Noller45239682008-11-28 18:46:19 +00001449 >>> s = m.get_server()
R. David Murray8e8099c2009-04-28 18:02:00 +00001450 >>> s.serve_forever()
Benjamin Petersone711caf2008-06-11 16:44:04 +00001451
1452One client can access the server as follows::
1453
1454 >>> from multiprocessing.managers import BaseManager
1455 >>> class QueueManager(BaseManager): pass
Jesse Noller45239682008-11-28 18:46:19 +00001456 >>> QueueManager.register('get_queue')
1457 >>> m = QueueManager(address=('foo.bar.org', 50000), authkey='abracadabra')
1458 >>> m.connect()
1459 >>> queue = m.get_queue()
Benjamin Petersone711caf2008-06-11 16:44:04 +00001460 >>> queue.put('hello')
1461
1462Another client can also use it::
1463
1464 >>> from multiprocessing.managers import BaseManager
1465 >>> class QueueManager(BaseManager): pass
R. David Murray8e8099c2009-04-28 18:02:00 +00001466 >>> QueueManager.register('get_queue')
1467 >>> m = QueueManager(address=('foo.bar.org', 50000), authkey='abracadabra')
1468 >>> m.connect()
1469 >>> queue = m.get_queue()
Benjamin Petersone711caf2008-06-11 16:44:04 +00001470 >>> queue.get()
1471 'hello'
1472
Georg Brandl48310cd2009-01-03 21:18:54 +00001473Local processes can also access that queue, using the code from above on the
Jesse Noller45239682008-11-28 18:46:19 +00001474client to access it remotely::
1475
1476 >>> from multiprocessing import Process, Queue
1477 >>> from multiprocessing.managers import BaseManager
1478 >>> class Worker(Process):
1479 ... def __init__(self, q):
1480 ... self.q = q
1481 ... super(Worker, self).__init__()
1482 ... def run(self):
1483 ... self.q.put('local hello')
Georg Brandl48310cd2009-01-03 21:18:54 +00001484 ...
Jesse Noller45239682008-11-28 18:46:19 +00001485 >>> queue = Queue()
1486 >>> w = Worker(queue)
1487 >>> w.start()
1488 >>> class QueueManager(BaseManager): pass
Georg Brandl48310cd2009-01-03 21:18:54 +00001489 ...
Jesse Noller45239682008-11-28 18:46:19 +00001490 >>> QueueManager.register('get_queue', callable=lambda: queue)
1491 >>> m = QueueManager(address=('', 50000), authkey='abracadabra')
1492 >>> s = m.get_server()
1493 >>> s.serve_forever()
Benjamin Petersone711caf2008-06-11 16:44:04 +00001494
1495Proxy Objects
1496~~~~~~~~~~~~~
1497
1498A proxy is an object which *refers* to a shared object which lives (presumably)
1499in a different process. The shared object is said to be the *referent* of the
1500proxy. Multiple proxy objects may have the same referent.
1501
1502A proxy object has methods which invoke corresponding methods of its referent
1503(although not every method of the referent will necessarily be available through
1504the proxy). A proxy can usually be used in most of the same ways that its
R. David Murray8e8099c2009-04-28 18:02:00 +00001505referent can:
1506
1507.. doctest::
Benjamin Petersone711caf2008-06-11 16:44:04 +00001508
1509 >>> from multiprocessing import Manager
1510 >>> manager = Manager()
1511 >>> l = manager.list([i*i for i in range(10)])
Georg Brandl49702152008-09-29 06:43:45 +00001512 >>> print(l)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001513 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Georg Brandl49702152008-09-29 06:43:45 +00001514 >>> print(repr(l))
R. David Murray8e8099c2009-04-28 18:02:00 +00001515 <ListProxy object, typeid 'list' at 0x...>
Benjamin Petersone711caf2008-06-11 16:44:04 +00001516 >>> l[4]
1517 16
1518 >>> l[2:5]
1519 [4, 9, 16]
1520
1521Notice that applying :func:`str` to a proxy will return the representation of
1522the referent, whereas applying :func:`repr` will return the representation of
1523the proxy.
1524
1525An important feature of proxy objects is that they are picklable so they can be
1526passed between processes. Note, however, that if a proxy is sent to the
1527corresponding manager's process then unpickling it will produce the referent
R. David Murray8e8099c2009-04-28 18:02:00 +00001528itself. This means, for example, that one shared object can contain a second:
1529
1530.. doctest::
Benjamin Petersone711caf2008-06-11 16:44:04 +00001531
1532 >>> a = manager.list()
1533 >>> b = manager.list()
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001534 >>> a.append(b) # referent of a now contains referent of b
Georg Brandl49702152008-09-29 06:43:45 +00001535 >>> print(a, b)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001536 [[]] []
1537 >>> b.append('hello')
Georg Brandl49702152008-09-29 06:43:45 +00001538 >>> print(a, b)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001539 [['hello']] ['hello']
1540
1541.. note::
1542
1543 The proxy types in :mod:`multiprocessing` do nothing to support comparisons
R. David Murray8e8099c2009-04-28 18:02:00 +00001544 by value. So, for instance, we have:
Benjamin Petersone711caf2008-06-11 16:44:04 +00001545
R. David Murray8e8099c2009-04-28 18:02:00 +00001546 .. doctest::
Benjamin Petersone711caf2008-06-11 16:44:04 +00001547
R. David Murray8e8099c2009-04-28 18:02:00 +00001548 >>> manager.list([1,2,3]) == [1,2,3]
1549 False
1550
1551 One should just use a copy of the referent instead when making comparisons.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001552
1553.. class:: BaseProxy
1554
1555 Proxy objects are instances of subclasses of :class:`BaseProxy`.
1556
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001557 .. method:: _callmethod(methodname[, args[, kwds]])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001558
1559 Call and return the result of a method of the proxy's referent.
1560
1561 If ``proxy`` is a proxy whose referent is ``obj`` then the expression ::
1562
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001563 proxy._callmethod(methodname, args, kwds)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001564
1565 will evaluate the expression ::
1566
1567 getattr(obj, methodname)(*args, **kwds)
1568
1569 in the manager's process.
1570
1571 The returned value will be a copy of the result of the call or a proxy to
1572 a new shared object -- see documentation for the *method_to_typeid*
1573 argument of :meth:`BaseManager.register`.
1574
Ezio Melottie130a522011-10-19 10:58:56 +03001575 If an exception is raised by the call, then is re-raised by
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001576 :meth:`_callmethod`. If some other exception is raised in the manager's
Benjamin Petersone711caf2008-06-11 16:44:04 +00001577 process then this is converted into a :exc:`RemoteError` exception and is
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001578 raised by :meth:`_callmethod`.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001579
1580 Note in particular that an exception will be raised if *methodname* has
1581 not been *exposed*
1582
R. David Murray8e8099c2009-04-28 18:02:00 +00001583 An example of the usage of :meth:`_callmethod`:
1584
1585 .. doctest::
Benjamin Petersone711caf2008-06-11 16:44:04 +00001586
1587 >>> l = manager.list(range(10))
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001588 >>> l._callmethod('__len__')
Benjamin Petersone711caf2008-06-11 16:44:04 +00001589 10
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001590 >>> l._callmethod('__getslice__', (2, 7)) # equiv to `l[2:7]`
Benjamin Petersone711caf2008-06-11 16:44:04 +00001591 [2, 3, 4, 5, 6]
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001592 >>> l._callmethod('__getitem__', (20,)) # equiv to `l[20]`
Benjamin Petersone711caf2008-06-11 16:44:04 +00001593 Traceback (most recent call last):
1594 ...
1595 IndexError: list index out of range
1596
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +00001597 .. method:: _getvalue()
Benjamin Petersone711caf2008-06-11 16:44:04 +00001598
1599 Return a copy of the referent.
1600
1601 If the referent is unpicklable then this will raise an exception.
1602
1603 .. method:: __repr__
1604
1605 Return a representation of the proxy object.
1606
1607 .. method:: __str__
1608
1609 Return the representation of the referent.
1610
1611
1612Cleanup
1613>>>>>>>
1614
1615A proxy object uses a weakref callback so that when it gets garbage collected it
1616deregisters itself from the manager which owns its referent.
1617
1618A shared object gets deleted from the manager process when there are no longer
1619any proxies referring to it.
1620
1621
1622Process Pools
1623~~~~~~~~~~~~~
1624
1625.. module:: multiprocessing.pool
1626 :synopsis: Create pools of processes.
1627
1628One can create a pool of processes which will carry out tasks submitted to it
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001629with the :class:`Pool` class.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001630
Jesse Noller1f0b6582010-01-27 03:36:01 +00001631.. class:: multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001632
1633 A process pool object which controls a pool of worker processes to which jobs
1634 can be submitted. It supports asynchronous results with timeouts and
1635 callbacks and has a parallel map implementation.
1636
1637 *processes* is the number of worker processes to use. If *processes* is
1638 ``None`` then the number returned by :func:`cpu_count` is used. If
1639 *initializer* is not ``None`` then each worker process will call
1640 ``initializer(*initargs)`` when it starts.
1641
Georg Brandl17ef0d52010-10-17 06:21:59 +00001642 .. versionadded:: 3.2
1643 *maxtasksperchild* is the number of tasks a worker process can complete
1644 before it will exit and be replaced with a fresh worker process, to enable
1645 unused resources to be freed. The default *maxtasksperchild* is None, which
1646 means worker processes will live as long as the pool.
Jesse Noller1f0b6582010-01-27 03:36:01 +00001647
1648 .. note::
1649
Georg Brandl17ef0d52010-10-17 06:21:59 +00001650 Worker processes within a :class:`Pool` typically live for the complete
1651 duration of the Pool's work queue. A frequent pattern found in other
1652 systems (such as Apache, mod_wsgi, etc) to free resources held by
1653 workers is to allow a worker within a pool to complete only a set
1654 amount of work before being exiting, being cleaned up and a new
1655 process spawned to replace the old one. The *maxtasksperchild*
1656 argument to the :class:`Pool` exposes this ability to the end user.
Jesse Noller1f0b6582010-01-27 03:36:01 +00001657
Benjamin Petersone711caf2008-06-11 16:44:04 +00001658 .. method:: apply(func[, args[, kwds]])
1659
Benjamin Peterson37d2fe02008-10-24 22:28:58 +00001660 Call *func* with arguments *args* and keyword arguments *kwds*. It blocks
Eli Benderskyd08effe2011-12-31 07:20:26 +02001661 until the result is ready. Given this blocks, :meth:`apply_async` is
1662 better suited for performing work in parallel. Additionally, *func*
1663 is only executed in one of the workers of the pool.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001664
Ask Solem1d3b8932010-11-09 21:36:56 +00001665 .. method:: apply_async(func[, args[, kwds[, callback[, error_callback]]]])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001666
1667 A variant of the :meth:`apply` method which returns a result object.
1668
1669 If *callback* is specified then it should be a callable which accepts a
1670 single argument. When the result becomes ready *callback* is applied to
Ask Solem1d3b8932010-11-09 21:36:56 +00001671 it, that is unless the call failed, in which case the *error_callback*
1672 is applied instead
1673
1674 If *error_callback* is specified then it should be a callable which
1675 accepts a single argument. If the target function fails, then
1676 the *error_callback* is called with the exception instance.
1677
1678 Callbacks should complete immediately since otherwise the thread which
1679 handles the results will get blocked.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001680
1681 .. method:: map(func, iterable[, chunksize])
1682
Georg Brandl22b34312009-07-26 14:54:51 +00001683 A parallel equivalent of the :func:`map` built-in function (it supports only
Eli Benderskyd08effe2011-12-31 07:20:26 +02001684 one *iterable* argument though). It blocks until the result is ready.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001685
1686 This method chops the iterable into a number of chunks which it submits to
1687 the process pool as separate tasks. The (approximate) size of these
1688 chunks can be specified by setting *chunksize* to a positive integer.
1689
Sandro Tosidb79e952011-08-08 16:38:13 +02001690 .. method:: map_async(func, iterable[, chunksize[, callback[, error_callback]]])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001691
Georg Brandl502d9a52009-07-26 15:02:41 +00001692 A variant of the :meth:`.map` method which returns a result object.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001693
1694 If *callback* is specified then it should be a callable which accepts a
1695 single argument. When the result becomes ready *callback* is applied to
Ask Solem1d3b8932010-11-09 21:36:56 +00001696 it, that is unless the call failed, in which case the *error_callback*
1697 is applied instead
1698
1699 If *error_callback* is specified then it should be a callable which
1700 accepts a single argument. If the target function fails, then
1701 the *error_callback* is called with the exception instance.
1702
1703 Callbacks should complete immediately since otherwise the thread which
1704 handles the results will get blocked.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001705
1706 .. method:: imap(func, iterable[, chunksize])
1707
Georg Brandl92905032008-11-22 08:51:39 +00001708 A lazier version of :meth:`map`.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001709
1710 The *chunksize* argument is the same as the one used by the :meth:`.map`
1711 method. For very long iterables using a large value for *chunksize* can
Ezio Melottie130a522011-10-19 10:58:56 +03001712 make the job complete **much** faster than using the default value of
Benjamin Petersone711caf2008-06-11 16:44:04 +00001713 ``1``.
1714
Georg Brandl502d9a52009-07-26 15:02:41 +00001715 Also if *chunksize* is ``1`` then the :meth:`!next` method of the iterator
Benjamin Petersone711caf2008-06-11 16:44:04 +00001716 returned by the :meth:`imap` method has an optional *timeout* parameter:
1717 ``next(timeout)`` will raise :exc:`multiprocessing.TimeoutError` if the
1718 result cannot be returned within *timeout* seconds.
1719
1720 .. method:: imap_unordered(func, iterable[, chunksize])
1721
1722 The same as :meth:`imap` except that the ordering of the results from the
1723 returned iterator should be considered arbitrary. (Only when there is
1724 only one worker process is the order guaranteed to be "correct".)
1725
Antoine Pitroude911b22011-12-21 11:03:24 +01001726 .. method:: starmap(func, iterable[, chunksize])
1727
1728 Like :meth:`map` except that the elements of the `iterable` are expected
1729 to be iterables that are unpacked as arguments.
1730
1731 Hence an `iterable` of `[(1,2), (3, 4)]` results in `[func(1,2),
1732 func(3,4)]`.
1733
1734 .. versionadded:: 3.3
1735
1736 .. method:: starmap_async(func, iterable[, chunksize[, callback[, error_back]]])
1737
1738 A combination of :meth:`starmap` and :meth:`map_async` that iterates over
1739 `iterable` of iterables and calls `func` with the iterables unpacked.
1740 Returns a result object.
1741
1742 .. versionadded:: 3.3
1743
Benjamin Petersone711caf2008-06-11 16:44:04 +00001744 .. method:: close()
1745
1746 Prevents any more tasks from being submitted to the pool. Once all the
1747 tasks have been completed the worker processes will exit.
1748
1749 .. method:: terminate()
1750
1751 Stops the worker processes immediately without completing outstanding
1752 work. When the pool object is garbage collected :meth:`terminate` will be
1753 called immediately.
1754
1755 .. method:: join()
1756
1757 Wait for the worker processes to exit. One must call :meth:`close` or
1758 :meth:`terminate` before using :meth:`join`.
1759
Richard Oudkerkd69cfe82012-06-18 17:47:52 +01001760 .. versionadded:: 3.3
1761 Pool objects now support the context manager protocol -- see
1762 :ref:`typecontextmanager`. :meth:`__enter__` returns the pool
1763 object, and :meth:`__exit__` calls :meth:`terminate`.
1764
Benjamin Petersone711caf2008-06-11 16:44:04 +00001765
1766.. class:: AsyncResult
1767
1768 The class of the result returned by :meth:`Pool.apply_async` and
1769 :meth:`Pool.map_async`.
1770
Georg Brandle3d70ae2008-11-22 08:54:21 +00001771 .. method:: get([timeout])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001772
1773 Return the result when it arrives. If *timeout* is not ``None`` and the
1774 result does not arrive within *timeout* seconds then
1775 :exc:`multiprocessing.TimeoutError` is raised. If the remote call raised
1776 an exception then that exception will be reraised by :meth:`get`.
1777
1778 .. method:: wait([timeout])
1779
1780 Wait until the result is available or until *timeout* seconds pass.
1781
1782 .. method:: ready()
1783
1784 Return whether the call has completed.
1785
1786 .. method:: successful()
1787
1788 Return whether the call completed without raising an exception. Will
1789 raise :exc:`AssertionError` if the result is not ready.
1790
1791The following example demonstrates the use of a pool::
1792
1793 from multiprocessing import Pool
1794
1795 def f(x):
1796 return x*x
1797
1798 if __name__ == '__main__':
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001799 with Pool(processes=4) as pool: # start 4 worker processes
1800 result = pool.apply_async(f, (10,)) # evaluate "f(10)" asynchronously
1801 print(result.get(timeout=1)) # prints "100" unless your computer is *very* slow
Benjamin Petersone711caf2008-06-11 16:44:04 +00001802
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001803 print(pool.map(f, range(10))) # prints "[0, 1, 4,..., 81]"
Benjamin Petersone711caf2008-06-11 16:44:04 +00001804
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001805 it = pool.imap(f, range(10))
1806 print(next(it)) # prints "0"
1807 print(next(it)) # prints "1"
1808 print(it.next(timeout=1)) # prints "4" unless your computer is *very* slow
Benjamin Petersone711caf2008-06-11 16:44:04 +00001809
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001810 import time
1811 result = pool.apply_async(time.sleep, (10,))
1812 print(result.get(timeout=1)) # raises TimeoutError
Benjamin Petersone711caf2008-06-11 16:44:04 +00001813
1814
1815.. _multiprocessing-listeners-clients:
1816
1817Listeners and Clients
1818~~~~~~~~~~~~~~~~~~~~~
1819
1820.. module:: multiprocessing.connection
1821 :synopsis: API for dealing with sockets.
1822
1823Usually message passing between processes is done using queues or by using
1824:class:`Connection` objects returned by :func:`Pipe`.
1825
1826However, the :mod:`multiprocessing.connection` module allows some extra
1827flexibility. It basically gives a high level message oriented API for dealing
Antoine Pitroubdb1cf12012-03-05 19:28:37 +01001828with sockets or Windows named pipes. It also has support for *digest
1829authentication* using the :mod:`hmac` module, and for polling
1830multiple connections at the same time.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001831
1832
1833.. function:: deliver_challenge(connection, authkey)
1834
1835 Send a randomly generated message to the other end of the connection and wait
1836 for a reply.
1837
1838 If the reply matches the digest of the message using *authkey* as the key
1839 then a welcome message is sent to the other end of the connection. Otherwise
1840 :exc:`AuthenticationError` is raised.
1841
1842.. function:: answerChallenge(connection, authkey)
1843
1844 Receive a message, calculate the digest of the message using *authkey* as the
1845 key, and then send the digest back.
1846
1847 If a welcome message is not received, then :exc:`AuthenticationError` is
1848 raised.
1849
1850.. function:: Client(address[, family[, authenticate[, authkey]]])
1851
1852 Attempt to set up a connection to the listener which is using address
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00001853 *address*, returning a :class:`~multiprocessing.Connection`.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001854
1855 The type of the connection is determined by *family* argument, but this can
1856 generally be omitted since it can usually be inferred from the format of
1857 *address*. (See :ref:`multiprocessing-address-formats`)
1858
Alexandre Vassalottic57a84f2009-07-17 12:07:01 +00001859 If *authenticate* is ``True`` or *authkey* is a string then digest
Benjamin Petersone711caf2008-06-11 16:44:04 +00001860 authentication is used. The key used for authentication will be either
Benjamin Petersona786b022008-08-25 21:05:21 +00001861 *authkey* or ``current_process().authkey)`` if *authkey* is ``None``.
Benjamin Petersone711caf2008-06-11 16:44:04 +00001862 If authentication fails then :exc:`AuthenticationError` is raised. See
1863 :ref:`multiprocessing-auth-keys`.
1864
1865.. class:: Listener([address[, family[, backlog[, authenticate[, authkey]]]]])
1866
1867 A wrapper for a bound socket or Windows named pipe which is 'listening' for
1868 connections.
1869
1870 *address* is the address to be used by the bound socket or named pipe of the
1871 listener object.
1872
Benjamin Petersond23f8222009-04-05 19:13:16 +00001873 .. note::
1874
1875 If an address of '0.0.0.0' is used, the address will not be a connectable
1876 end point on Windows. If you require a connectable end-point,
1877 you should use '127.0.0.1'.
1878
Benjamin Petersone711caf2008-06-11 16:44:04 +00001879 *family* is the type of socket (or named pipe) to use. This can be one of
1880 the strings ``'AF_INET'`` (for a TCP socket), ``'AF_UNIX'`` (for a Unix
1881 domain socket) or ``'AF_PIPE'`` (for a Windows named pipe). Of these only
1882 the first is guaranteed to be available. If *family* is ``None`` then the
1883 family is inferred from the format of *address*. If *address* is also
1884 ``None`` then a default is chosen. This default is the family which is
1885 assumed to be the fastest available. See
1886 :ref:`multiprocessing-address-formats`. Note that if *family* is
1887 ``'AF_UNIX'`` and address is ``None`` then the socket will be created in a
1888 private temporary directory created using :func:`tempfile.mkstemp`.
1889
1890 If the listener object uses a socket then *backlog* (1 by default) is passed
1891 to the :meth:`listen` method of the socket once it has been bound.
1892
1893 If *authenticate* is ``True`` (``False`` by default) or *authkey* is not
1894 ``None`` then digest authentication is used.
1895
1896 If *authkey* is a string then it will be used as the authentication key;
1897 otherwise it must be *None*.
1898
1899 If *authkey* is ``None`` and *authenticate* is ``True`` then
Benjamin Petersona786b022008-08-25 21:05:21 +00001900 ``current_process().authkey`` is used as the authentication key. If
Alexandre Vassalottic57a84f2009-07-17 12:07:01 +00001901 *authkey* is ``None`` and *authenticate* is ``False`` then no
Benjamin Petersone711caf2008-06-11 16:44:04 +00001902 authentication is done. If authentication fails then
1903 :exc:`AuthenticationError` is raised. See :ref:`multiprocessing-auth-keys`.
1904
1905 .. method:: accept()
1906
1907 Accept a connection on the bound socket or named pipe of the listener
1908 object and return a :class:`Connection` object. If authentication is
1909 attempted and fails, then :exc:`AuthenticationError` is raised.
1910
1911 .. method:: close()
1912
1913 Close the bound socket or named pipe of the listener object. This is
1914 called automatically when the listener is garbage collected. However it
1915 is advisable to call it explicitly.
1916
1917 Listener objects have the following read-only properties:
1918
1919 .. attribute:: address
1920
1921 The address which is being used by the Listener object.
1922
1923 .. attribute:: last_accepted
1924
1925 The address from which the last accepted connection came. If this is
1926 unavailable then it is ``None``.
1927
Richard Oudkerkd69cfe82012-06-18 17:47:52 +01001928 .. versionadded:: 3.3
1929 Listener objects now support the context manager protocol -- see
1930 :ref:`typecontextmanager`. :meth:`__enter__` returns the
1931 listener object, and :meth:`__exit__` calls :meth:`close`.
1932
Antoine Pitroubdb1cf12012-03-05 19:28:37 +01001933.. function:: wait(object_list, timeout=None)
1934
1935 Wait till an object in *object_list* is ready. Returns the list of
1936 those objects in *object_list* which are ready. If *timeout* is a
1937 float then the call blocks for at most that many seconds. If
1938 *timeout* is ``None`` then it will block for an unlimited period.
Richard Oudkerk59d54042012-05-10 16:11:12 +01001939 A negative timeout is equivalent to a zero timeout.
Antoine Pitroubdb1cf12012-03-05 19:28:37 +01001940
1941 For both Unix and Windows, an object can appear in *object_list* if
1942 it is
1943
1944 * a readable :class:`~multiprocessing.Connection` object;
1945 * a connected and readable :class:`socket.socket` object; or
1946 * the :attr:`~multiprocessing.Process.sentinel` attribute of a
1947 :class:`~multiprocessing.Process` object.
1948
1949 A connection or socket object is ready when there is data available
1950 to be read from it, or the other end has been closed.
1951
1952 **Unix**: ``wait(object_list, timeout)`` almost equivalent
1953 ``select.select(object_list, [], [], timeout)``. The difference is
1954 that, if :func:`select.select` is interrupted by a signal, it can
1955 raise :exc:`OSError` with an error number of ``EINTR``, whereas
1956 :func:`wait` will not.
1957
1958 **Windows**: An item in *object_list* must either be an integer
1959 handle which is waitable (according to the definition used by the
1960 documentation of the Win32 function ``WaitForMultipleObjects()``)
1961 or it can be an object with a :meth:`fileno` method which returns a
1962 socket handle or pipe handle. (Note that pipe handles and socket
1963 handles are **not** waitable handles.)
1964
1965 .. versionadded:: 3.3
Benjamin Petersone711caf2008-06-11 16:44:04 +00001966
1967The module defines two exceptions:
1968
1969.. exception:: AuthenticationError
1970
1971 Exception raised when there is an authentication error.
1972
Benjamin Petersone711caf2008-06-11 16:44:04 +00001973
1974**Examples**
1975
1976The following server code creates a listener which uses ``'secret password'`` as
1977an authentication key. It then waits for a connection and sends some data to
1978the client::
1979
1980 from multiprocessing.connection import Listener
1981 from array import array
1982
1983 address = ('localhost', 6000) # family is deduced to be 'AF_INET'
Benjamin Petersone711caf2008-06-11 16:44:04 +00001984
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001985 with Listener(address, authkey=b'secret password') as listener:
1986 with listener.accept() as conn:
1987 print('connection accepted from', listener.last_accepted)
Benjamin Petersone711caf2008-06-11 16:44:04 +00001988
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001989 conn.send([2.25, None, 'junk', float])
Benjamin Petersone711caf2008-06-11 16:44:04 +00001990
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001991 conn.send_bytes(b'hello')
Benjamin Petersone711caf2008-06-11 16:44:04 +00001992
Richard Oudkerk633c4d92012-06-18 21:29:36 +01001993 conn.send_bytes(array('i', [42, 1729]))
Benjamin Petersone711caf2008-06-11 16:44:04 +00001994
1995The following code connects to the server and receives some data from the
1996server::
1997
1998 from multiprocessing.connection import Client
1999 from array import array
2000
2001 address = ('localhost', 6000)
Benjamin Petersone711caf2008-06-11 16:44:04 +00002002
Richard Oudkerk633c4d92012-06-18 21:29:36 +01002003 with Client(address, authkey=b'secret password') as conn:
2004 print(conn.recv()) # => [2.25, None, 'junk', float]
Benjamin Petersone711caf2008-06-11 16:44:04 +00002005
Richard Oudkerk633c4d92012-06-18 21:29:36 +01002006 print(conn.recv_bytes()) # => 'hello'
Benjamin Petersone711caf2008-06-11 16:44:04 +00002007
Richard Oudkerk633c4d92012-06-18 21:29:36 +01002008 arr = array('i', [0, 0, 0, 0, 0])
2009 print(conn.recv_bytes_into(arr)) # => 8
2010 print(arr) # => array('i', [42, 1729, 0, 0, 0])
Benjamin Petersone711caf2008-06-11 16:44:04 +00002011
Antoine Pitroubdb1cf12012-03-05 19:28:37 +01002012The following code uses :func:`~multiprocessing.connection.wait` to
2013wait for messages from multiple processes at once::
2014
2015 import time, random
2016 from multiprocessing import Process, Pipe, current_process
2017 from multiprocessing.connection import wait
2018
2019 def foo(w):
2020 for i in range(10):
2021 w.send((i, current_process().name))
2022 w.close()
2023
2024 if __name__ == '__main__':
2025 readers = []
2026
2027 for i in range(4):
2028 r, w = Pipe(duplex=False)
2029 readers.append(r)
2030 p = Process(target=foo, args=(w,))
2031 p.start()
2032 # We close the writable end of the pipe now to be sure that
2033 # p is the only process which owns a handle for it. This
2034 # ensures that when p closes its handle for the writable end,
2035 # wait() will promptly report the readable end as being ready.
2036 w.close()
2037
2038 while readers:
2039 for r in wait(readers):
2040 try:
2041 msg = r.recv()
2042 except EOFError:
2043 readers.remove(r)
2044 else:
2045 print(msg)
2046
Benjamin Petersone711caf2008-06-11 16:44:04 +00002047
2048.. _multiprocessing-address-formats:
2049
2050Address Formats
2051>>>>>>>>>>>>>>>
2052
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002053* An ``'AF_INET'`` address is a tuple of the form ``(hostname, port)`` where
Benjamin Petersone711caf2008-06-11 16:44:04 +00002054 *hostname* is a string and *port* is an integer.
2055
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002056* An ``'AF_UNIX'`` address is a string representing a filename on the
Benjamin Petersone711caf2008-06-11 16:44:04 +00002057 filesystem.
2058
2059* An ``'AF_PIPE'`` address is a string of the form
Benjamin Petersonda10d3b2009-01-01 00:23:30 +00002060 :samp:`r'\\\\.\\pipe\\{PipeName}'`. To use :func:`Client` to connect to a named
Georg Brandl1f01deb2009-01-03 22:47:39 +00002061 pipe on a remote computer called *ServerName* one should use an address of the
Benjamin Peterson28d88b42009-01-09 03:03:23 +00002062 form :samp:`r'\\\\{ServerName}\\pipe\\{PipeName}'` instead.
Benjamin Petersone711caf2008-06-11 16:44:04 +00002063
2064Note that any string beginning with two backslashes is assumed by default to be
2065an ``'AF_PIPE'`` address rather than an ``'AF_UNIX'`` address.
2066
2067
2068.. _multiprocessing-auth-keys:
2069
2070Authentication keys
2071~~~~~~~~~~~~~~~~~~~
2072
2073When one uses :meth:`Connection.recv`, the data received is automatically
2074unpickled. Unfortunately unpickling data from an untrusted source is a security
2075risk. Therefore :class:`Listener` and :func:`Client` use the :mod:`hmac` module
2076to provide digest authentication.
2077
2078An authentication key is a string which can be thought of as a password: once a
2079connection is established both ends will demand proof that the other knows the
2080authentication key. (Demonstrating that both ends are using the same key does
2081**not** involve sending the key over the connection.)
2082
2083If authentication is requested but do authentication key is specified then the
Benjamin Petersona786b022008-08-25 21:05:21 +00002084return value of ``current_process().authkey`` is used (see
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002085:class:`~multiprocessing.Process`). This value will automatically inherited by
2086any :class:`~multiprocessing.Process` object that the current process creates.
2087This means that (by default) all processes of a multi-process program will share
2088a single authentication key which can be used when setting up connections
Benjamin Petersond23f8222009-04-05 19:13:16 +00002089between themselves.
Benjamin Petersone711caf2008-06-11 16:44:04 +00002090
2091Suitable authentication keys can also be generated by using :func:`os.urandom`.
2092
2093
2094Logging
2095~~~~~~~
2096
2097Some support for logging is available. Note, however, that the :mod:`logging`
2098package does not use process shared locks so it is possible (depending on the
2099handler type) for messages from different processes to get mixed up.
2100
2101.. currentmodule:: multiprocessing
2102.. function:: get_logger()
2103
2104 Returns the logger used by :mod:`multiprocessing`. If necessary, a new one
2105 will be created.
2106
Jesse Noller41faa542009-01-25 03:45:53 +00002107 When first created the logger has level :data:`logging.NOTSET` and no
2108 default handler. Messages sent to this logger will not by default propagate
2109 to the root logger.
Benjamin Petersone711caf2008-06-11 16:44:04 +00002110
2111 Note that on Windows child processes will only inherit the level of the
2112 parent process's logger -- any other customization of the logger will not be
2113 inherited.
2114
Jesse Noller41faa542009-01-25 03:45:53 +00002115.. currentmodule:: multiprocessing
2116.. function:: log_to_stderr()
2117
2118 This function performs a call to :func:`get_logger` but in addition to
2119 returning the logger created by get_logger, it adds a handler which sends
2120 output to :data:`sys.stderr` using format
2121 ``'[%(levelname)s/%(processName)s] %(message)s'``.
2122
Benjamin Petersone711caf2008-06-11 16:44:04 +00002123Below is an example session with logging turned on::
2124
Benjamin Peterson206e3072008-10-19 14:07:49 +00002125 >>> import multiprocessing, logging
Jesse Noller41faa542009-01-25 03:45:53 +00002126 >>> logger = multiprocessing.log_to_stderr()
Benjamin Petersone711caf2008-06-11 16:44:04 +00002127 >>> logger.setLevel(logging.INFO)
2128 >>> logger.warning('doomed')
2129 [WARNING/MainProcess] doomed
Benjamin Peterson206e3072008-10-19 14:07:49 +00002130 >>> m = multiprocessing.Manager()
R. David Murray8e8099c2009-04-28 18:02:00 +00002131 [INFO/SyncManager-...] child process calling self.run()
2132 [INFO/SyncManager-...] created temp directory /.../pymp-...
2133 [INFO/SyncManager-...] manager serving at '/.../listener-...'
Benjamin Petersone711caf2008-06-11 16:44:04 +00002134 >>> del m
2135 [INFO/MainProcess] sending shutdown message to manager
R. David Murray8e8099c2009-04-28 18:02:00 +00002136 [INFO/SyncManager-...] manager exiting with exitcode 0
Benjamin Petersone711caf2008-06-11 16:44:04 +00002137
Jesse Noller41faa542009-01-25 03:45:53 +00002138In addition to having these two logging functions, the multiprocessing also
2139exposes two additional logging level attributes. These are :const:`SUBWARNING`
2140and :const:`SUBDEBUG`. The table below illustrates where theses fit in the
2141normal level hierarchy.
2142
2143+----------------+----------------+
2144| Level | Numeric value |
2145+================+================+
2146| ``SUBWARNING`` | 25 |
2147+----------------+----------------+
2148| ``SUBDEBUG`` | 5 |
2149+----------------+----------------+
2150
2151For a full table of logging levels, see the :mod:`logging` module.
2152
2153These additional logging levels are used primarily for certain debug messages
2154within the multiprocessing module. Below is the same example as above, except
2155with :const:`SUBDEBUG` enabled::
2156
2157 >>> import multiprocessing, logging
2158 >>> logger = multiprocessing.log_to_stderr()
2159 >>> logger.setLevel(multiprocessing.SUBDEBUG)
2160 >>> logger.warning('doomed')
2161 [WARNING/MainProcess] doomed
2162 >>> m = multiprocessing.Manager()
R. David Murray8e8099c2009-04-28 18:02:00 +00002163 [INFO/SyncManager-...] child process calling self.run()
2164 [INFO/SyncManager-...] created temp directory /.../pymp-...
2165 [INFO/SyncManager-...] manager serving at '/.../pymp-djGBXN/listener-...'
Jesse Noller41faa542009-01-25 03:45:53 +00002166 >>> del m
2167 [SUBDEBUG/MainProcess] finalizer calling ...
2168 [INFO/MainProcess] sending shutdown message to manager
R. David Murray8e8099c2009-04-28 18:02:00 +00002169 [DEBUG/SyncManager-...] manager received shutdown message
2170 [SUBDEBUG/SyncManager-...] calling <Finalize object, callback=unlink, ...
2171 [SUBDEBUG/SyncManager-...] finalizer calling <built-in function unlink> ...
2172 [SUBDEBUG/SyncManager-...] calling <Finalize object, dead>
2173 [SUBDEBUG/SyncManager-...] finalizer calling <function rmtree at 0x5aa730> ...
2174 [INFO/SyncManager-...] manager exiting with exitcode 0
Benjamin Petersone711caf2008-06-11 16:44:04 +00002175
2176The :mod:`multiprocessing.dummy` module
2177~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2178
2179.. module:: multiprocessing.dummy
2180 :synopsis: Dumb wrapper around threading.
2181
2182:mod:`multiprocessing.dummy` replicates the API of :mod:`multiprocessing` but is
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002183no more than a wrapper around the :mod:`threading` module.
Benjamin Petersone711caf2008-06-11 16:44:04 +00002184
2185
2186.. _multiprocessing-programming:
2187
2188Programming guidelines
2189----------------------
2190
2191There are certain guidelines and idioms which should be adhered to when using
2192:mod:`multiprocessing`.
2193
2194
2195All platforms
2196~~~~~~~~~~~~~
2197
2198Avoid shared state
2199
2200 As far as possible one should try to avoid shifting large amounts of data
2201 between processes.
2202
2203 It is probably best to stick to using queues or pipes for communication
2204 between processes rather than using the lower level synchronization
2205 primitives from the :mod:`threading` module.
2206
2207Picklability
2208
2209 Ensure that the arguments to the methods of proxies are picklable.
2210
2211Thread safety of proxies
2212
2213 Do not use a proxy object from more than one thread unless you protect it
2214 with a lock.
2215
2216 (There is never a problem with different processes using the *same* proxy.)
2217
2218Joining zombie processes
2219
2220 On Unix when a process finishes but has not been joined it becomes a zombie.
2221 There should never be very many because each time a new process starts (or
2222 :func:`active_children` is called) all completed processes which have not
2223 yet been joined will be joined. Also calling a finished process's
2224 :meth:`Process.is_alive` will join the process. Even so it is probably good
2225 practice to explicitly join all the processes that you start.
2226
2227Better to inherit than pickle/unpickle
2228
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002229 On Windows many types from :mod:`multiprocessing` need to be picklable so
Benjamin Petersone711caf2008-06-11 16:44:04 +00002230 that child processes can use them. However, one should generally avoid
2231 sending shared objects to other processes using pipes or queues. Instead
Eli Benderskyd08effe2011-12-31 07:20:26 +02002232 you should arrange the program so that a process which needs access to a
Benjamin Petersone711caf2008-06-11 16:44:04 +00002233 shared resource created elsewhere can inherit it from an ancestor process.
2234
2235Avoid terminating processes
2236
2237 Using the :meth:`Process.terminate` method to stop a process is liable to
2238 cause any shared resources (such as locks, semaphores, pipes and queues)
2239 currently being used by the process to become broken or unavailable to other
2240 processes.
2241
2242 Therefore it is probably best to only consider using
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002243 :meth:`Process.terminate` on processes which never use any shared resources.
Benjamin Petersone711caf2008-06-11 16:44:04 +00002244
2245Joining processes that use queues
2246
2247 Bear in mind that a process that has put items in a queue will wait before
2248 terminating until all the buffered items are fed by the "feeder" thread to
2249 the underlying pipe. (The child process can call the
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002250 :meth:`Queue.cancel_join_thread` method of the queue to avoid this behaviour.)
Benjamin Petersone711caf2008-06-11 16:44:04 +00002251
2252 This means that whenever you use a queue you need to make sure that all
2253 items which have been put on the queue will eventually be removed before the
2254 process is joined. Otherwise you cannot be sure that processes which have
2255 put items on the queue will terminate. Remember also that non-daemonic
2256 processes will be automatically be joined.
2257
2258 An example which will deadlock is the following::
2259
2260 from multiprocessing import Process, Queue
2261
2262 def f(q):
2263 q.put('X' * 1000000)
2264
2265 if __name__ == '__main__':
2266 queue = Queue()
2267 p = Process(target=f, args=(queue,))
2268 p.start()
2269 p.join() # this deadlocks
2270 obj = queue.get()
2271
2272 A fix here would be to swap the last two lines round (or simply remove the
2273 ``p.join()`` line).
2274
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002275Explicitly pass resources to child processes
Benjamin Petersone711caf2008-06-11 16:44:04 +00002276
2277 On Unix a child process can make use of a shared resource created in a
2278 parent process using a global resource. However, it is better to pass the
2279 object as an argument to the constructor for the child process.
2280
2281 Apart from making the code (potentially) compatible with Windows this also
2282 ensures that as long as the child process is still alive the object will not
2283 be garbage collected in the parent process. This might be important if some
2284 resource is freed when the object is garbage collected in the parent
2285 process.
2286
2287 So for instance ::
2288
2289 from multiprocessing import Process, Lock
2290
2291 def f():
2292 ... do something using "lock" ...
2293
2294 if __name__ == '__main__':
2295 lock = Lock()
2296 for i in range(10):
2297 Process(target=f).start()
2298
2299 should be rewritten as ::
2300
2301 from multiprocessing import Process, Lock
2302
2303 def f(l):
2304 ... do something using "l" ...
2305
2306 if __name__ == '__main__':
2307 lock = Lock()
2308 for i in range(10):
2309 Process(target=f, args=(lock,)).start()
2310
Eli Benderskyd08effe2011-12-31 07:20:26 +02002311Beware of replacing :data:`sys.stdin` with a "file like object"
Alexandre Vassalottic57a84f2009-07-17 12:07:01 +00002312
2313 :mod:`multiprocessing` originally unconditionally called::
2314
2315 os.close(sys.stdin.fileno())
2316
2317 in the :meth:`multiprocessing.Process._bootstrap` method --- this resulted
2318 in issues with processes-in-processes. This has been changed to::
2319
2320 sys.stdin.close()
2321 sys.stdin = open(os.devnull)
2322
2323 Which solves the fundamental issue of processes colliding with each other
2324 resulting in a bad file descriptor error, but introduces a potential danger
2325 to applications which replace :func:`sys.stdin` with a "file-like object"
2326 with output buffering. This danger is that if multiple processes call
2327 :func:`close()` on this file-like object, it could result in the same
2328 data being flushed to the object multiple times, resulting in corruption.
2329
2330 If you write a file-like object and implement your own caching, you can
2331 make it fork-safe by storing the pid whenever you append to the cache,
2332 and discarding the cache when the pid changes. For example::
2333
2334 @property
2335 def cache(self):
2336 pid = os.getpid()
2337 if pid != self._pid:
2338 self._pid = pid
2339 self._cache = []
2340 return self._cache
2341
2342 For more information, see :issue:`5155`, :issue:`5313` and :issue:`5331`
Benjamin Petersone711caf2008-06-11 16:44:04 +00002343
2344Windows
2345~~~~~~~
2346
2347Since Windows lacks :func:`os.fork` it has a few extra restrictions:
2348
2349More picklability
2350
2351 Ensure that all arguments to :meth:`Process.__init__` are picklable. This
2352 means, in particular, that bound or unbound methods cannot be used directly
2353 as the ``target`` argument on Windows --- just define a function and use
2354 that instead.
2355
2356 Also, if you subclass :class:`Process` then make sure that instances will be
2357 picklable when the :meth:`Process.start` method is called.
2358
2359Global variables
2360
2361 Bear in mind that if code run in a child process tries to access a global
2362 variable, then the value it sees (if any) may not be the same as the value
2363 in the parent process at the time that :meth:`Process.start` was called.
2364
2365 However, global variables which are just module level constants cause no
2366 problems.
2367
2368Safe importing of main module
2369
2370 Make sure that the main module can be safely imported by a new Python
2371 interpreter without causing unintended side effects (such a starting a new
2372 process).
2373
2374 For example, under Windows running the following module would fail with a
2375 :exc:`RuntimeError`::
2376
2377 from multiprocessing import Process
2378
2379 def foo():
Georg Brandl49702152008-09-29 06:43:45 +00002380 print('hello')
Benjamin Petersone711caf2008-06-11 16:44:04 +00002381
2382 p = Process(target=foo)
2383 p.start()
2384
2385 Instead one should protect the "entry point" of the program by using ``if
2386 __name__ == '__main__':`` as follows::
2387
2388 from multiprocessing import Process, freeze_support
2389
2390 def foo():
Georg Brandl49702152008-09-29 06:43:45 +00002391 print('hello')
Benjamin Petersone711caf2008-06-11 16:44:04 +00002392
2393 if __name__ == '__main__':
2394 freeze_support()
2395 p = Process(target=foo)
2396 p.start()
2397
Benjamin Peterson5289b2b2008-06-28 00:40:54 +00002398 (The ``freeze_support()`` line can be omitted if the program will be run
Benjamin Petersone711caf2008-06-11 16:44:04 +00002399 normally instead of frozen.)
2400
2401 This allows the newly spawned Python interpreter to safely import the module
2402 and then run the module's ``foo()`` function.
2403
2404 Similar restrictions apply if a pool or manager is created in the main
2405 module.
2406
2407
2408.. _multiprocessing-examples:
2409
2410Examples
2411--------
2412
2413Demonstration of how to create and use customized managers and proxies:
2414
2415.. literalinclude:: ../includes/mp_newtype.py
Ezio Melottif86b28e2012-04-13 20:50:48 -06002416 :language: python3
Benjamin Petersone711caf2008-06-11 16:44:04 +00002417
2418
2419Using :class:`Pool`:
2420
2421.. literalinclude:: ../includes/mp_pool.py
Ezio Melottif86b28e2012-04-13 20:50:48 -06002422 :language: python3
Benjamin Petersone711caf2008-06-11 16:44:04 +00002423
2424
2425Synchronization types like locks, conditions and queues:
2426
2427.. literalinclude:: ../includes/mp_synchronize.py
Ezio Melottif86b28e2012-04-13 20:50:48 -06002428 :language: python3
Benjamin Petersone711caf2008-06-11 16:44:04 +00002429
2430
Georg Brandl0b37b332010-09-03 22:49:27 +00002431An example showing how to use queues to feed tasks to a collection of worker
Eli Benderskyd08effe2011-12-31 07:20:26 +02002432processes and collect the results:
Benjamin Petersone711caf2008-06-11 16:44:04 +00002433
2434.. literalinclude:: ../includes/mp_workers.py
2435
2436
2437An example of how a pool of worker processes can each run a
Georg Brandl47d48bb2010-07-10 11:51:06 +00002438:class:`~http.server.SimpleHTTPRequestHandler` instance while sharing a single
2439listening socket.
Benjamin Petersone711caf2008-06-11 16:44:04 +00002440
2441.. literalinclude:: ../includes/mp_webserver.py
2442
2443
2444Some simple benchmarks comparing :mod:`multiprocessing` with :mod:`threading`:
2445
2446.. literalinclude:: ../includes/mp_benchmarks.py
2447