/
githubmirror
/
zstd
Обзор
Документация
Войти
/
githubmirror
/
zstd
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
tests/rateLimiter.py
41 строка
1 KB
W. Felix Handte
Update Copyright Headers 'Facebook' -> 'Meta Platforms'
20 дек 2022, 20:37
20 дек 2022, 20:37
8927f98
Код
Авторство
О чём код?
#!/usr/bin/env python3 # ################################################################ # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under both the BSD-style license (found in the # LICENSE file in the root directory of this source tree) and the GPLv2 (found # in the COPYING file in the root directory of this source tree). # You may select, at your option, one of the above-listed licenses. # ########################################################################## # Rate limiter, replacement for pv # this rate limiter does not "catch up" after a blocking period # Limitations: # - only accepts limit speed in MB/s import sys import time MB = 1024 * 1024 rate = float(sys.argv[1]) * MB start = time.time() total_read = 0 # sys.stderr.close() # remove error message, for Ctrl+C try: buf = " " while len(buf): now = time.time() to_read = max(int(rate * (now - start)), 1) max_buf_size = 1 * MB to_read = min(to_read, max_buf_size) start = now buf = sys.stdin.buffer.read(to_read) sys.stdout.buffer.write(buf) except (KeyboardInterrupt, BrokenPipeError) as e: pass