spacepaste

  1.  
  2. #!/usr/bin/python3
  3. from io import StringIO, BytesIO
  4. # Old
  5. def copyfileobj(fsrc, fdst, length=16*1024):
  6. """copy data from file-like object fsrc to file-like object fdst"""
  7. while 1:
  8. buf = fsrc.read(length)
  9. if not buf:
  10. break
  11. fdst.write(buf)
  12. # New
  13. def _copyfileobj(fsrc, fdst, length=16*1024):
  14. """copy data from file-like object fsrc to file-like object fdst"""
  15. write = fdst.write
  16. if hasattr(fsrc, 'readinto') and length > 0:
  17. buf = memoryview(bytearray(length))
  18. readinto = fsrc.readinto
  19. while 1:
  20. recv_len = readinto(buf)
  21. if recv_len < length:
  22. # write remaining content if any.
  23. write(buf[:recv_len])
  24. break
  25. write(buf)
  26. else:
  27. read = fsrc.read
  28. while 1:
  29. buf = read(length)
  30. if not buf:
  31. break
  32. write(buf)
  33. value = bytearray([0]*107374182) # 100mb
  34. # value = bytearray([0]*536870912) # 500mb
  35. with BytesIO(value) as fsrc:
  36. with BytesIO() as fdst:
  37. copyfileobj(fsrc, fdst)
  38.