annotate Doc/includes/mp_pool.py @ 78069:a8aa77458e12 3.2

Add c_size_t and c_ssize_t to the ctypes summary table.
author Antoine Pitrou <solipsis@pitrou.net>
date Thu, 12 Jul 2012 20:31:50 +0200
parents 5e93c5cdc378
children 3b82e0d83bf9
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 # A test of `multiprocessing.Pool` class
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
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
8 import multiprocessing
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
9 import time
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
10 import random
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
11 import sys
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
12
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
13 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
14 # Functions used by test code
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
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
17 def calculate(func, args):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
18 result = func(*args)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
19 return '%s says that %s%s = %s' % (
48773
25f06a703f89 Merged revisions 65864 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47595
diff changeset
20 multiprocessing.current_process().name,
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
21 func.__name__, args, result
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
22 )
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
23
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
24 def calculatestar(args):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
25 return calculate(*args)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
26
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
27 def mul(a, b):
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 55797
diff changeset
28 time.sleep(0.5 * random.random())
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
29 return a * b
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
30
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
31 def plus(a, b):
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 55797
diff changeset
32 time.sleep(0.5 * random.random())
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
33 return a + b
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
34
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
35 def f(x):
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 55797
diff changeset
36 return 1.0 / (x - 5.0)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
37
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
38 def pow3(x):
69581
5e93c5cdc378 Issue 11929: Minor whitespace clean-ups.
Raymond Hettinger <python@rcn.com>
parents: 55797
diff changeset
39 return x ** 3
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
40
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
41 def noop(x):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
42 pass
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
43
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 # Test code
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
46 #
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 def test():
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
49 print('cpu_count() = %d\n' % multiprocessing.cpu_count())
47595
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 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
52 # Create pool
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
53 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
54
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
55 PROCESSES = 4
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
56 print('Creating pool with %d processes\n' % PROCESSES)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
57 pool = multiprocessing.Pool(PROCESSES)
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
58 print('pool = %s' % pool)
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
59 print()
47595
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 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
62 # Tests
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
63 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
64
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
65 TASKS = [(mul, (i, 7)) for i in range(10)] + \
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
66 [(plus, (i, 8)) for i in range(10)]
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
67
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
68 results = [pool.apply_async(calculate, t) for t in TASKS]
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
69 imap_it = pool.imap(calculatestar, TASKS)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
70 imap_unordered_it = pool.imap_unordered(calculatestar, TASKS)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
71
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
72 print('Ordered results using pool.apply_async():')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
73 for r in results:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
74 print('\t', r.get())
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
75 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
76
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
77 print('Ordered results using pool.imap():')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
78 for x in imap_it:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
79 print('\t', x)
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
80 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
81
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
82 print('Unordered results using pool.imap_unordered():')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
83 for x in imap_unordered_it:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
84 print('\t', x)
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
85 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
86
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
87 print('Ordered results using pool.map() --- will block till complete:')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
88 for x in pool.map(calculatestar, TASKS):
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
89 print('\t', x)
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
90 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
91
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
92 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
93 # Simple benchmarks
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
94 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
95
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
96 N = 100000
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
97 print('def pow3(x): return x**3')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
98
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
99 t = time.time()
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
100 A = list(map(pow3, range(N)))
55797
afbb2b2ff6f7 Merged revisions 74613,74615,74619-74620,74622 via svnmerge from
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
101 print('\tmap(pow3, range(%d)):\n\t\t%s seconds' % \
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
102 (N, time.time() - t))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
103
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
104 t = time.time()
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
105 B = pool.map(pow3, range(N))
55797
afbb2b2ff6f7 Merged revisions 74613,74615,74619-74620,74622 via svnmerge from
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
106 print('\tpool.map(pow3, range(%d)):\n\t\t%s seconds' % \
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
107 (N, time.time() - t))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
108
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
109 t = time.time()
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
110 C = list(pool.imap(pow3, range(N), chunksize=N//8))
55797
afbb2b2ff6f7 Merged revisions 74613,74615,74619-74620,74622 via svnmerge from
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
111 print('\tlist(pool.imap(pow3, range(%d), chunksize=%d)):\n\t\t%s' \
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
112 ' seconds' % (N, N//8, time.time() - t))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
113
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
114 assert A == B == C, (len(A), len(B), len(C))
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
115 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
116
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
117 L = [None] * 1000000
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
118 print('def noop(x): pass')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
119 print('L = [None] * 1000000')
47595
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 t = time.time()
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
122 A = list(map(noop, L))
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
123 print('\tmap(noop, L):\n\t\t%s seconds' % \
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
124 (time.time() - t))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
125
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
126 t = time.time()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
127 B = pool.map(noop, L)
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
128 print('\tpool.map(noop, L):\n\t\t%s seconds' % \
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
129 (time.time() - t))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
130
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
131 t = time.time()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
132 C = list(pool.imap(noop, L, chunksize=len(L)//8))
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
133 print('\tlist(pool.imap(noop, L, chunksize=%d)):\n\t\t%s seconds' % \
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
134 (len(L)//8, time.time() - t))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
135
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
136 assert A == B == C, (len(A), len(B), len(C))
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
137 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
138
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
139 del A, B, C, L
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 error handling
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
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
145 print('Testing error handling:')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
146
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
147 try:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
148 print(pool.apply(f, (5,)))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
149 except ZeroDivisionError:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
150 print('\tGot ZeroDivisionError as expected from pool.apply()')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
151 else:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
152 raise AssertionError('expected ZeroDivisionError')
47595
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 try:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
155 print(pool.map(f, list(range(10))))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
156 except ZeroDivisionError:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
157 print('\tGot ZeroDivisionError as expected from pool.map()')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
158 else:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
159 raise AssertionError('expected ZeroDivisionError')
47595
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 try:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
162 print(list(pool.imap(f, list(range(10)))))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
163 except ZeroDivisionError:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
164 print('\tGot ZeroDivisionError as expected from list(pool.imap())')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
165 else:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
166 raise AssertionError('expected ZeroDivisionError')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
167
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
168 it = pool.imap(f, list(range(10)))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
169 for i in range(10):
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
170 try:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
171 x = next(it)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
172 except ZeroDivisionError:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
173 if i == 5:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
174 pass
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
175 except StopIteration:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
176 break
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
177 else:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
178 if i == 5:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
179 raise AssertionError('expected ZeroDivisionError')
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 assert i == 9
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
182 print('\tGot ZeroDivisionError as expected from IMapIterator.next()')
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
183 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
184
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 # Testing timeouts
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
187 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
188
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
189 print('Testing ApplyResult.get() with timeout:', end=' ')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
190 res = pool.apply_async(calculate, TASKS[0])
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
191 while 1:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
192 sys.stdout.flush()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
193 try:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
194 sys.stdout.write('\n\t%s' % res.get(0.02))
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
195 break
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
196 except multiprocessing.TimeoutError:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
197 sys.stdout.write('.')
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
198 print()
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
199 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
200
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
201 print('Testing IMapIterator.next() with timeout:', end=' ')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
202 it = pool.imap(calculatestar, TASKS)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
203 while 1:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
204 sys.stdout.flush()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
205 try:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
206 sys.stdout.write('\n\t%s' % it.next(0.02))
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
207 except StopIteration:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
208 break
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
209 except multiprocessing.TimeoutError:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
210 sys.stdout.write('.')
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
211 print()
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
212 print()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
213
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
214 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
215 # Testing callback
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
216 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
217
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
218 print('Testing callback:')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
219
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
220 A = []
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
221 B = [56, 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
222
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
223 r = pool.apply_async(mul, (7, 8), callback=A.append)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
224 r.wait()
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: 48773
diff changeset
226 r = pool.map_async(pow3, list(range(10)), callback=A.extend)
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
227 r.wait()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
228
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
229 if A == B:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
230 print('\tcallbacks succeeded\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
231 else:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
232 print('\t*** callbacks failed\n\t\t%s != %s\n' % (A, B))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
233
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 # Check there are no outstanding tasks
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
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
238 assert not pool._cache, 'cache = %r' % pool._cache
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
239
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
240 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
241 # Check close() methods
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
242 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
243
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
244 print('Testing close():')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
245
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
246 for worker in pool._pool:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
247 assert worker.is_alive()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
248
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
249 result = pool.apply_async(time.sleep, [0.5])
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
250 pool.close()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
251 pool.join()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
252
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
253 assert result.get() is None
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
254
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
255 for worker in pool._pool:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
256 assert not worker.is_alive()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
257
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
258 print('\tclose() succeeded\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
259
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
260 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
261 # Check terminate() method
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
262 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
263
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
264 print('Testing terminate():')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
265
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
266 pool = multiprocessing.Pool(2)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
267 DELTA = 0.1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
268 ignore = pool.apply(pow3, [2])
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
269 results = [pool.apply_async(time.sleep, [DELTA]) for i in range(100)]
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
270 pool.terminate()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
271 pool.join()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
272
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
273 for worker in pool._pool:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
274 assert not worker.is_alive()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
275
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
276 print('\tterminate() succeeded\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
277
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
278 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
279 # Check garbage collection
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
280 #
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
281
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
282 print('Testing garbage collection:')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
283
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
284 pool = multiprocessing.Pool(2)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
285 DELTA = 0.1
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
286 processes = pool._pool
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
287 ignore = pool.apply(pow3, [2])
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
288 results = [pool.apply_async(time.sleep, [DELTA]) for i in range(100)]
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
289
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
290 results = pool = None
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
291
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
292 time.sleep(DELTA * 2)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
293
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
294 for worker in processes:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
295 assert not worker.is_alive()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
296
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
297 print('\tgarbage collection succeeded\n')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
298
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
299
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
300 if __name__ == '__main__':
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
301 multiprocessing.freeze_support()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
302
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
303 assert len(sys.argv) in (1, 2)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
304
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
305 if len(sys.argv) == 1 or sys.argv[1] == 'processes':
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
306 print(' Using processes '.center(79, '-'))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
307 elif sys.argv[1] == 'threads':
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
308 print(' Using threads '.center(79, '-'))
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
309 import multiprocessing.dummy as multiprocessing
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
310 else:
49874
3803b6c4ff8f 2to3 run of multiprocessing examples.
Christian Heimes <christian@cheimes.de>
parents: 48773
diff changeset
311 print('Usage:\n\t%s [processes | threads]' % sys.argv[0])
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
312 raise SystemExit(2)
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
313
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
314 test()