-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathPython_Multiprocessing_Server_Process_Manager.py
More file actions
39 lines (30 loc) · 1.48 KB
/
Copy pathPython_Multiprocessing_Server_Process_Manager.py
File metadata and controls
39 lines (30 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Python multiprocessing - Process-based parallelism
# The following scripts are written to demonstrate multiprocessing (Process-based parallelism)
# using Python.
# Multiprocessing is a Python package that supports spawning processes using an API similar to
# the threading module. The multiprocessing package offers both local and remote concurrency,
# effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads.
# Due to this, the multiprocessing module allows the programmer to fully leverage multiple
# processors on a given machine. It runs on both Unix and Windows.
# The multiprocessing module also introduces APIs which do not have analogs in the threading module.
# A prime example of this is the 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).
# Server process.
# A manager object returned by Manager() controls a server process which holds Python objects and
# allows other processes to manipulate them using proxies.
from multiprocessing import Process, Manager
def f(d, l):
d[1] = '1'
d['2'] = 2
d[0.25] = None
l.reverse()
if __name__ == '__main__':
with Manager() as manager:
d = manager.dict()
l = manager.list(range(10))
p = Process(target=f, args=(d, l))
p.start()
p.join()
print(d)
print(l)