Add python-eventlet package to MOS 8.0 repository
[packages/trusty/python-eventlet.git] / python-eventlet / benchmarks / spawn.py
1 """Compare spawn to spawn_n"""
2 from __future__ import print_function
3
4 import eventlet
5 import benchmarks
6
7
8 def cleanup():
9     eventlet.sleep(0.2)
10
11
12 iters = 10000
13 best = benchmarks.measure_best(
14     5, iters,
15     'pass',
16     cleanup,
17     eventlet.sleep)
18 print("eventlet.sleep (main)", best[eventlet.sleep])
19
20 gt = eventlet.spawn(
21     benchmarks.measure_best, 5, iters,
22     'pass',
23     cleanup,
24     eventlet.sleep)
25 best = gt.wait()
26 print("eventlet.sleep (gt)", best[eventlet.sleep])
27
28
29 def dummy(i=None):
30     return i
31
32
33 def run_spawn():
34     eventlet.spawn(dummy, 1)
35
36
37 def run_spawn_n():
38     eventlet.spawn_n(dummy, 1)
39
40
41 def run_spawn_n_kw():
42     eventlet.spawn_n(dummy, i=1)
43
44
45 best = benchmarks.measure_best(
46     5, iters,
47     'pass',
48     cleanup,
49     run_spawn_n,
50     run_spawn,
51     run_spawn_n_kw)
52 print("eventlet.spawn", best[run_spawn])
53 print("eventlet.spawn_n", best[run_spawn_n])
54 print("eventlet.spawn_n(**kw)", best[run_spawn_n_kw])
55 print("%% %0.1f" % ((best[run_spawn] - best[run_spawn_n]) / best[run_spawn_n] * 100))
56
57 pool = None
58
59
60 def setup():
61     global pool
62     pool = eventlet.GreenPool(iters)
63
64
65 def run_pool_spawn():
66     pool.spawn(dummy, 1)
67
68
69 def run_pool_spawn_n():
70     pool.spawn_n(dummy, 1)
71
72
73 def cleanup_pool():
74     pool.waitall()
75
76
77 best = benchmarks.measure_best(
78     3, iters,
79     setup,
80     cleanup_pool,
81     run_pool_spawn,
82     run_pool_spawn_n,
83 )
84 print("eventlet.GreenPool.spawn", best[run_pool_spawn])
85 print("eventlet.GreenPool.spawn_n", best[run_pool_spawn_n])
86 print("%% %0.1f" % ((best[run_pool_spawn] - best[run_pool_spawn_n]) / best[run_pool_spawn_n] * 100))