Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import time
- import socket
- UDP_IP = "127.0.0.1"
- UDP_PORT = 8989
- PACKET_SIZE = 1024 # bytes
- BITRATE = 8192.0 # kilobits per second
- DELAY = (PACKET_SIZE * 8.0) / (BITRATE * 1000)
- def load_generator():
- print 1 / DELAY, "packets per second"
- sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- # В этой переменной храним идеальное время для следующей итерации;
- # для первой итерации это просто текущее время
- next_time = time.time()
- while True:
- # Работаем
- packet = bytearray(PACKET_SIZE)
- sock.sendto(packet, (UDP_IP, UDP_PORT))
- # Планируем идеальное время для следующей итерации
- next_time += DELAY
- # Считаем задержку, которую нужно поспать до следующей итерации
- real_delay = next_time - time.time()
- # Если задержка меньше нуля, то мы опоздали
- # Если задержка больше нуля, то мы проснёмся аккурат в next_time
- # (или немного позже, если компьютер тормозит, но это будет скомпенсировано)
- if real_delay > 0:
- time.sleep(real_delay)
- else:
- # Отладочный вывод
- print "%.05f seconds late!" % -real_delay
- if __name__ == "__main__":
- try:
- load_generator()
- except KeyboardInterrupt:
- print "Stopped by Key"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement