annotate Doc/includes/mp_benchmarks.py @ 79691:05c8928362ee

Merge __next__ method link fixes with 3.3.
author Ezio Melotti <ezio.melotti@gmail.com>
date Fri, 12 Oct 2012 13:46:37 +0300
parents bd195749c0a2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
1 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
2 # Simple benchmarks for the multiprocessing package
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
3 #
49908
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49874
diff changeset
4 # Copyright (c) 2006-2008, R Oudkerk
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49874
diff changeset
5 # All rights reserved.
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49874
diff changeset
6 #
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
7
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
8 import time
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
9 import multiprocessing
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
10 import threading
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
11 import queue
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
12 import gc
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
13
76599
bd195749c0a2 Issue #14428: Use the new time.perf_counter() and time.process_time() functions
Victor Stinner <victor.stinner@gmail.com>
parents: 69581
diff changeset
14 _timer = time.perf_counter
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
15
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
16 delta = 1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
17
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
18
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
19 #### TEST_QUEUESPEED
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
20
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
21 def queuespeed_func(q, c, iterations):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
22 a = '0' * 256
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
23 c.acquire()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
24 c.notify()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
25 c.release()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
26
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
27 for i in range(iterations):
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
28 q.put(a)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
29
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
30 q.put('STOP')
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
31
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
32 def test_queuespeed(Process, q, c):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
33 elapsed = 0
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
34 iterations = 1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
35
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
36 while elapsed < delta:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
37 iterations *= 2
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
38
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
39 p = Process(target=queuespeed_func, args=(q, c, iterations))
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
40 c.acquire()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
41 p.start()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
42 c.wait()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
43 c.release()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
44
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
45 result = None
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
46 t = _timer()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
47
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
48 while result != 'STOP':
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
49 result = q.get()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
50
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
51 elapsed = _timer() - t
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
52
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
53 p.join()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
54
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
55 print(iterations, 'objects passed through the queue in', elapsed, 'seconds')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
56 print('average number/sec:', iterations/elapsed)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
57
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
58
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
59 #### TEST_PIPESPEED
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
60
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
61 def pipe_func(c, cond, iterations):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
62 a = '0' * 256
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
63 cond.acquire()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
64 cond.notify()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
65 cond.release()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
66
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
67 for i in range(iterations):
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
68 c.send(a)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
69
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
70 c.send('STOP')
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
71
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
72 def test_pipespeed():
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
73 c, d = multiprocessing.Pipe()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
74 cond = multiprocessing.Condition()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
75 elapsed = 0
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
76 iterations = 1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
77
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
78 while elapsed < delta:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
79 iterations *= 2
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
80
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
81 p = multiprocessing.Process(target=pipe_func,
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
82 args=(d, cond, iterations))
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
83 cond.acquire()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
84 p.start()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
85 cond.wait()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
86 cond.release()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
87
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
88 result = None
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
89 t = _timer()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
90
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
91 while result != 'STOP':
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
92 result = c.recv()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
93
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
94 elapsed = _timer() - t
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
95 p.join()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
96
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
97 print(iterations, 'objects passed through connection in',elapsed,'seconds')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
98 print('average number/sec:', iterations/elapsed)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
99
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
100
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
101 #### TEST_SEQSPEED
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
102
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
103 def test_seqspeed(seq):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
104 elapsed = 0
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
105 iterations = 1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
106
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
107 while elapsed < delta:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
108 iterations *= 2
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
109
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
110 t = _timer()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
111
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
112 for i in range(iterations):
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
113 a = seq[5]
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
114
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
115 elapsed = _timer() - t
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
116
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
117 print(iterations, 'iterations in', elapsed, 'seconds')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
118 print('average number/sec:', iterations/elapsed)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
119
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
120
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
121 #### TEST_LOCK
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
122
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
123 def test_lockspeed(l):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
124 elapsed = 0
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
125 iterations = 1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
126
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
127 while elapsed < delta:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
128 iterations *= 2
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
129
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
130 t = _timer()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
131
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
132 for i in range(iterations):
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
133 l.acquire()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
134 l.release()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
135
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
136 elapsed = _timer() - t
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
137
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
138 print(iterations, 'iterations in', elapsed, 'seconds')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
139 print('average number/sec:', iterations/elapsed)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
140
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
141
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
142 #### TEST_CONDITION
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
143
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
144 def conditionspeed_func(c, N):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
145 c.acquire()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
146 c.notify()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
147
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
148 for i in range(N):
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
149 c.wait()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
150 c.notify()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
151
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
152 c.release()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
153
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
154 def test_conditionspeed(Process, c):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
155 elapsed = 0
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
156 iterations = 1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
157
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
158 while elapsed < delta:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
159 iterations *= 2
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
160
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
161 c.acquire()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
162 p = Process(target=conditionspeed_func, args=(c, iterations))
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
163 p.start()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
164
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
165 c.wait()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
166
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
167 t = _timer()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
168
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
169 for i in range(iterations):
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
170 c.notify()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
171 c.wait()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
172
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 49908
diff changeset
173 elapsed = _timer() - t
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
174
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
175 c.release()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
176 p.join()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
177
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
178 print(iterations * 2, 'waits in', elapsed, 'seconds')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
179 print('average number/sec:', iterations * 2 / elapsed)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
180
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
181 ####
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
182
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
183 def test():
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
184 manager = multiprocessing.Manager()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
185
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
186 gc.disable()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
187
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
188 print('\n\t######## testing Queue.Queue\n')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
189 test_queuespeed(threading.Thread, queue.Queue(),
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
190 threading.Condition())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
191 print('\n\t######## testing multiprocessing.Queue\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
192 test_queuespeed(multiprocessing.Process, multiprocessing.Queue(),
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
193 multiprocessing.Condition())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
194 print('\n\t######## testing Queue managed by server process\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
195 test_queuespeed(multiprocessing.Process, manager.Queue(),
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
196 manager.Condition())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
197 print('\n\t######## testing multiprocessing.Pipe\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
198 test_pipespeed()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
199
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
200 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
201
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
202 print('\n\t######## testing list\n')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
203 test_seqspeed(list(range(10)))
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
204 print('\n\t######## testing list managed by server process\n')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
205 test_seqspeed(manager.list(list(range(10))))
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
206 print('\n\t######## testing Array("i", ..., lock=False)\n')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
207 test_seqspeed(multiprocessing.Array('i', list(range(10)), lock=False))
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
208 print('\n\t######## testing Array("i", ..., lock=True)\n')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
209 test_seqspeed(multiprocessing.Array('i', list(range(10)), lock=True))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
210
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
211 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
212
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
213 print('\n\t######## testing threading.Lock\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
214 test_lockspeed(threading.Lock())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
215 print('\n\t######## testing threading.RLock\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
216 test_lockspeed(threading.RLock())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
217 print('\n\t######## testing multiprocessing.Lock\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
218 test_lockspeed(multiprocessing.Lock())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
219 print('\n\t######## testing multiprocessing.RLock\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
220 test_lockspeed(multiprocessing.RLock())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
221 print('\n\t######## testing lock managed by server process\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
222 test_lockspeed(manager.Lock())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
223 print('\n\t######## testing rlock managed by server process\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
224 test_lockspeed(manager.RLock())
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
225
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
226 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
227
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
228 print('\n\t######## testing threading.Condition\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
229 test_conditionspeed(threading.Thread, threading.Condition())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
230 print('\n\t######## testing multiprocessing.Condition\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
231 test_conditionspeed(multiprocessing.Process, multiprocessing.Condition())
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 47595
diff changeset
232 print('\n\t######## testing condition managed by a server process\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
233 test_conditionspeed(multiprocessing.Process, manager.Condition())
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
234
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
235 gc.enable()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
236
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
237 if __name__ == '__main__':
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
238 multiprocessing.freeze_support()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
239 test()