mirror of
				https://github.com/facebook/zstd.git
				synced 2025-10-31 16:47:48 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 |