Skip to content

Instantly share code, notes, and snippets.

@Qolt
Created December 15, 2013 10:50
Show Gist options
  • Save Qolt/7971509 to your computer and use it in GitHub Desktop.
Save Qolt/7971509 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import socket, os, select, time, threading
DATA = """*3\r\n$4\r\nHSET\r\n$8\r\ntest_key\r\n$10\r\ntest value\r\n"""
TOTAL_TIME = 0
TOTAL_TESTS = 0
class Client(threading.Thread):
def __init__(self, mutex):
threading.Thread.__init__(self)
self.epoll = select.epoll()
self.sockets = {}
self.time = 0
self.mutex = mutex
def run(self):
for i in range(50):
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/tmp/socks")
self.epoll.register(s.fileno(), select.EPOLLOUT)
self.sockets[s.fileno()] = s
total = 0; tests = 0
for i in range(200):
events = self.epoll.poll(1)
for fileno, event in events:
start_time = time.clock()
self.sockets[fileno].send(DATA)
self.sockets[fileno].recv(100)
total += (time.clock() - start_time)
tests += 1
self.time += total
with self.mutex:
global TOTAL_TIME
global TOTAL_TESTS
TOTAL_TIME += self.time
TOTAL_TESTS += tests
if __name__ == "__main__":
mutex = threading.Lock()
clients = []
for i in range(1):
clients.append(Client(mutex))
for client in clients:
client.start()
for client in clients:
client.join()
print "FINISH"
print (TOTAL_TIME)
print (TOTAL_TESTS)
print "%8.3f requests per second" % ((TOTAL_TESTS) / (TOTAL_TIME))
#!/usr/bin/python
import socket, os, select, time
sockets = {}
epoll = select.epoll()
data = """*3\r\n$4\r\nHSET\r\n$8\r\ntest_key\r\n$10\r\ntest value\r\n"""
for i in range(50):
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/tmp/socks")
epoll.register(s.fileno(), select.EPOLLOUT)
sockets[s.fileno()] = s
events = epoll.poll(1)
total = 0; counter = 0
for i in range(200):
for fileno, event in events:
start_time = time.clock()
sockets[fileno].send(data)
sockets[fileno].recv(100)
total += (time.clock() - start_time)
counter += 1
print counter, total
print "%8.3f requests per second" % (counter / total)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment