Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
22bcde63
Commit
22bcde63
authored
Jan 11, 2015
by
Antoine Pitrou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #22952: improve multiprocessing doc introduction and defer notes until appropriate.
Patch by Davin Potts.
parent
3a8677b7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
33 deletions
+54
-33
Doc/library/multiprocessing.rst
Doc/library/multiprocessing.rst
+54
-33
No files found.
Doc/library/multiprocessing.rst
View file @
22bcde63
...
...
@@ -18,41 +18,27 @@ to this, the :mod:`multiprocessing` module allows the programmer to fully
leverage
multiple
processors
on
a
given
machine
.
It
runs
on
both
Unix
and
Windows
.
..
warning
::
The
:
mod
:`
multiprocessing
`
module
also
introduces
APIs
which
do
not
have
analogs
in
the
:
mod
:`
threading
`
module
.
A
prime
example
of
this
is
the
:
class
:`
Pool
`
object
which
offers
a
convenient
means
of
parallelizing
the
execution
of
a
function
across
multiple
input
values
,
distributing
the
input
data
across
processes
(
data
parallelism
).
The
following
example
demonstrates
the
common
practice
of
defining
such
functions
in
a
module
so
that
child
processes
can
successfully
import
that
module
.
This
basic
example
of
data
parallelism
using
:
class
:`
Pool
`,
::
Some
of
this
package
's functionality requires a functioning shared semaphore
implementation on the host operating system. Without one, the
:mod:`multiprocessing.synchronize` module will be disabled, and attempts to
import it will result in an :exc:`ImportError`. See
:issue:`3770` for additional information.
from
multiprocessing
import
Pool
.. note::
def
f
(
x
):
return
x
*
x
if
__name__
==
'__main__'
:
p
=
Pool
(
5
)
print
(
p
.
map
(
f
,
[
1
,
2
,
3
]))
will
print
to
standard
output
::
Functionality within this package requires that the ``__main__`` module be
importable by the children. This is covered in :ref:`multiprocessing-programming`
however it is worth pointing out here. This means that some examples, such
as the :class:`multiprocessing.Pool` examples will not work in the
interactive interpreter. For example::
>>> from multiprocessing import Pool
>>> p = Pool(5)
>>> def f(x):
... return x*x
...
>>> p.map(f, [1,2,3])
Process PoolWorker-1:
Process PoolWorker-2:
Process PoolWorker-3:
Traceback (most recent call last):
Traceback (most recent call last):
Traceback (most recent call last):
AttributeError: '
module
' object has no attribute '
f
'
AttributeError: '
module
' object has no attribute '
f
'
AttributeError: '
module
' object has no attribute '
f
'
(If you try this it will actually output three full tracebacks
interleaved in a semi-random fashion, and then you may have to
stop the master process somehow.)
[
1
,
4
,
9
]
The
:
class
:`
Process
`
class
...
...
@@ -99,7 +85,6 @@ For an explanation of why (on Windows) the ``if __name__ == '__main__'`` part is
necessary
,
see
:
ref
:`
multiprocessing
-
programming
`.
Exchanging
objects
between
processes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
...
@@ -175,6 +160,14 @@ that only one process prints to standard output at a time::
Without
using
the
lock
output
from
the
different
processes
is
liable
to
get
all
mixed
up
.
..
warning
::
Some
of
this
package
's functionality requires a functioning shared semaphore
implementation on the host operating system. Without one, the
:mod:`multiprocessing.synchronize` module will be disabled, and attempts to
import it will result in an :exc:`ImportError`. See
:issue:`3770` for additional information.
Sharing state between processes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
...
@@ -290,6 +283,34 @@ For example::
Note that the methods of a pool should only ever be used by the
process which created it.
.. note::
Functionality within this package requires that the ``__main__`` module be
importable by the children. This is covered in :ref:`multiprocessing-programming`
however it is worth pointing out here. This means that some examples, such
as the :class:`Pool` examples will not work in the interactive interpreter.
For example::
>>> from multiprocessing import Pool
>>> p = Pool(5)
>>> def f(x):
... return x*x
...
>>> p.map(f, [1,2,3])
Process PoolWorker-1:
Process PoolWorker-2:
Process PoolWorker-3:
Traceback (most recent call last):
Traceback (most recent call last):
Traceback (most recent call last):
AttributeError: '
module
' object has no attribute '
f
'
AttributeError: '
module
' object has no attribute '
f
'
AttributeError: '
module
' object has no attribute '
f
'
(If you try this it will actually output three full tracebacks
interleaved in a semi-random fashion, and then you may have to
stop the master process somehow.)
Reference
---------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment