1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
python-snappy
=============
Python library for the snappy compression library from Google.
This library is distributed under the New BSD License
(http://www.opensource.org/licenses/bsd-license.php).
Dependencies
============
* snappy library >= 1.0.2 (or revision 27)
https://github.com/google/snappy
You can install Snappy C library with following commands:
- APT: :code:`sudo apt-get install libsnappy-dev`
- RPM: :code:`sudo yum install libsnappy-devel`
- Brew: :code:`brew install snappy`
To use with pypy:
* cffi >= 0.7
http://cffi.readthedocs.org/
* Supports Python 2.7 and Python 3
Build & Install
===============
Build:
::
python setup.py build
Install:
::
python setup.py install
Or install it from PyPi:
::
pip install python-snappy
Run tests
=========
::
# run python snappy tests
nosetest test_snappy.py
# support for cffi backend
nosetest test_snappy_cffi.py
Benchmarks
==========
*snappy vs. zlib*
**Compressing:**
::
%timeit zlib.compress("hola mundo cruel!")
100000 loops, best of 3: 9.64 us per loop
%timeit snappy.compress("hola mundo cruel!")
1000000 loops, best of 3: 849 ns per loop
**Snappy** is **11 times faster** than zlib when compressing
**Uncompressing:**
::
r = snappy.compress("hola mundo cruel!")
%timeit snappy.uncompress(r)
1000000 loops, best of 3: 755 ns per loop
r = zlib.compress("hola mundo cruel!")
%timeit zlib.decompress(r)
1000000 loops, best of 3: 1.11 us per loop
**Snappy** is **twice** as fast as zlib
Commandline usage
=================
You can invoke Python Snappy to compress or decompress files or streams from
the commandline after installation as follows
Compressing and decompressing a file:
::
$ python -m snappy -c uncompressed_file compressed_file.snappy
$ python -m snappy -d compressed_file.snappy uncompressed_file
Compressing and decompressing a stream:
::
$ cat uncompressed_data | python -m snappy -c > compressed_data.snappy
$ cat compressed_data.snappy | python -m snappy -d > uncompressed_data
You can get help by running
::
$ python -m snappy --help
Snappy - compression library from Google (c)
http://code.google.com/p/snappy
Frequently Asked Questions
==========================
**How to install it on Mac OS X?**
It has been reported a few times (Issue #7 and #23) that it can't be installed correctly the library in Mac.
The procedure should be,
::
$ brew install snappy # snappy library from Google
$ CPPFLAGS="-I/usr/local/include -L/usr/local/lib" pip install python-snappy
|