-#! /usr/bin/env python3
+#!/usr/bin/env python3
# ################################################################
# Copyright (c) 2018-present, Facebook, Inc.
import sys
import time
-rate = float(sys.argv[1]) * 1024 * 1024
+MB = 1024 * 1024
+rate = float(sys.argv[1]) * MB
+rate *= 1.25 # compensation for excluding write time (experimentally determined)
start = time.time()
total_read = 0
while len(buf):
now = time.time()
to_read = max(int(rate * (now - start) - total_read), 1)
- buf = sys.stdin.read(to_read)
+ max_buf_size = 1 * MB
+ to_read = min(to_read, max_buf_size)
+ buf = sys.stdin.buffer.read(to_read)
write_start = time.time()
- sys.stdout.write(buf)
+ sys.stdout.buffer.write(buf)
write_end = time.time()
- start += write_end - write_start
+ start += write_end - write_start # exclude write delay
total_read += len(buf)