muduo/examples/wordcount/slowsink.py

63 lines
1.4 KiB
Python
Raw Normal View History

2024-03-08 14:03:37 +08:00
#!/usr/bin/python
import os, socket, sys, time
host = ''
port = 2007
if len(sys.argv) > 1:
mps = float(sys.argv[1])
else:
mps = 1.0
bps = mps * 1000000
BUFSIZE = int(bps/10) # sleep 100ms at full speed
print "Mbytes/s =", mps
if len(sys.argv) > 3:
host = sys.argv[2]
port = int(sys.argv[3])
print "connecting to %s:%d" % (host, port)
else:
print "listening on port", port
if host:
client_socket = socket.create_connection((host, port))
print "connected to", client_socket.getpeername()
else:
listen_address = ("", port)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(listen_address)
server_socket.listen(5)
(client_socket, client_address) = server_socket.accept()
print "got connection from", client_address
start = time.time()
total_size = 0
dot = bps
while True:
data = client_socket.recv(BUFSIZE)
if data:
size = len(data)
total_size += size
if total_size >= dot:
dot += bps
sys.stdout.write('.')
sys.stdout.flush()
time.sleep(size / bps)
else:
print "\ndisconnect"
client_socket.close()
break
end = time.time()
elapsed = end - start
print "elapsed seconds %.3f" % elapsed
print "total bytes", total_size
print "throughput bytes/s %.2f" % (total_size / elapsed)
print "throughput Mbytes/s %.3f" % (total_size / elapsed / 1000000)