You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
"""
|
|
|
|
Used for stressing Latch.get/put. Swap the number of producer/consumer threads
|
|
|
|
below to try both -- there are many conditions in the Latch code that require
|
|
|
|
testing of both.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import logging
|
|
|
|
import random
|
|
|
|
import threading
|
|
|
|
import time
|
|
|
|
import mitogen.core
|
|
|
|
import mitogen.utils
|
|
|
|
|
|
|
|
mitogen.utils.log_to_file()
|
|
|
|
mitogen.core.IOLOG.setLevel(logging.DEBUG)
|
|
|
|
mitogen.core._v = True
|
|
|
|
mitogen.core._vv = True
|
|
|
|
|
|
|
|
l = mitogen.core.Latch()
|
|
|
|
consumed = 0
|
|
|
|
produced = 0
|
|
|
|
crash = 0
|
|
|
|
|
|
|
|
def cons():
|
|
|
|
global consumed, crash
|
|
|
|
try:
|
|
|
|
while 1:
|
|
|
|
g = l.get()
|
|
|
|
print('got=%s consumed=%s produced=%s crash=%s' % (g, consumed, produced, crash))
|
|
|
|
consumed += 1
|
|
|
|
time.sleep(g)
|
|
|
|
for x in range(int(g * 1000)):
|
|
|
|
pass
|
|
|
|
except:
|
|
|
|
crash += 1
|
|
|
|
|
|
|
|
def prod():
|
|
|
|
global produced
|
|
|
|
while 1:
|
|
|
|
l.put(random.random()/10)
|
|
|
|
produced += 1
|
|
|
|
time.sleep(random.random()/10)
|
|
|
|
|
|
|
|
allc = [threading.Thread(target=cons) for x in range(64)]
|
|
|
|
allp = [threading.Thread(target=prod) for x in range(8)]
|
|
|
|
for th in allc+allp:
|
|
|
|
th.setDaemon(True)
|
|
|
|
th.start()
|
|
|
|
|
|
|
|
raw_input()
|
|
|
|
exit()
|