1 """Test context switching performance of threading and eventlet"""
2 from __future__ import print_function
8 from eventlet import hubs
9 from eventlet.hubs import pyevent, epolls, poll, selects
12 CONTEXT_SWITCHES = 100000
15 def run(event, wait_event):
17 while counter <= CONTEXT_SWITCHES:
25 event1 = eventlet.event.Event()
26 event2 = eventlet.event.Event()
28 thread1 = eventlet.spawn(run, event1, event2)
29 thread2 = eventlet.spawn(run, event2, event1)
35 class BenchThread(threading.Thread):
36 def __init__(self, event, wait_event):
37 threading.Thread.__init__(self)
40 self.wait_event = wait_event
43 while self.counter <= CONTEXT_SWITCHES:
44 self.wait_event.wait()
45 self.wait_event.clear()
51 event1 = threading.Event()
52 event2 = threading.Event()
54 thread1 = BenchThread(event1, event2)
55 thread2 = BenchThread(event2, event1)
62 print("Testing with %d context switches" % CONTEXT_SWITCHES)
65 print("threading: %.02f seconds" % (time.time() - start))
71 print("pyevent: %.02f seconds" % (time.time() - start))
73 print("pyevent hub unavailable")
79 print("epoll: %.02f seconds" % (time.time() - start))
81 print("epoll hub unavailable")
87 print("poll: %.02f seconds" % (time.time() - start))
89 print("poll hub unavailable")
95 print("select: %.02f seconds" % (time.time() - start))
97 print("select hub unavailable")