tfrecords
simplify and transplant the tfrecord and table
update information
2023-07-01: Add arrow parquet
2022-10-30: Add lmdb leveldb read and writer and add record batch write
2022-10-17: Add shared memory for record to read mode with more accelerated Reading.
2022-02-01: simplify and transplant the tfrecord dataset
1. record read and write demo , with_share_memory flags will Accelerated Reading
# -*- coding: utf-8 -*-
# @Time : 2022/9/8 15:49
import tfrecords
options = tfrecords.TFRecordOptions(compression_type=tfrecords.TFRecordCompressionType.NONE)
def test_write(filename, N=3, context='aaa'):
with tfrecords.TFRecordWriter(filename, options=options) as file_writer:
batch_data = []
for i in range(N):
d = context + '____' + str(i)
batch_data.append(d)
if (i + 1) % 100 == 0:
file_writer.write_batch(batch_data)
batch_data.clear()
if len(batch_data):
file_writer.write_batch(batch_data)
batch_data.clear()
def test_record_iterator(example_paths):
print('test_record_iterator')
for example_path in example_paths:
iterator = tfrecords.tf_record_iterator(example_path, options=options, skip_bytes=0, with_share_memory=True)
offset_list = iterator.read_offsets(0)
count = iterator.read_count(0)
print(count)
num = 0
for iter in iterator:
num += 1
print(iter)
def test_random_reader(example_paths):
print('test_random_reader')
for example_path in example_paths:
file_reader = tfrecords.tf_record_random_reader(example_path, options=options, with_share_memory=True)
last_pos = 0
while True:
try:
x, pos = file_reader.read(last_pos)
print(x, pos)
last_pos = pos
except Exception as e:
break
def test_random_reader2(example_paths):
print('test_random_reader2')
for example_path in example_paths:
file_reader = tfrecords.tf_record_random_reader(example_path, options=options, with_share_memory=True)
skip_bytes = 0
offset_list = file_reader.read_offsets(skip_bytes)
for offset, length in offset_list:
x, _ = file_reader.read(offset)
print(x)
test_write('d:/example.tfrecords0', 3, 'file0')
example_paths = tfrecords.glob('d:/example.tfrecords*')
print(example_paths)
test_record_iterator(example_paths)
print()
test_random_reader(example_paths)
print()
test_random_reader2(example_paths)
print()
2. leveldb read and write demo
# -*- coding: utf-8 -*-
# @Time : 2022/9/8 15:49
from tfrecords import LEVELDB
db_path = 'd:/example_leveldb'
def test_write(db_path):
options = LEVELDB.LeveldbOptions(create_if_missing=True, error_if_exists=False)
file_writer = LEVELDB.Leveldb(db_path, options)
keys, values = [], []
for i in range(30):
keys.append(b"input_" + str(i).encode())
keys.append(b"label_" + str(i).encode())
values.append(b"xiaoming" + str(i).encode())
values.append(b"zzs" + str(i).encode())
if (i + 1) % 1000 == 0:
file_writer.put_batch(keys, values)
keys.clear()
values.clear()
if len(keys):
file_writer.put_batch(keys, values)
keys.clear()
values.clear()
file_writer.close()
def test_read(db_path):
options = LEVELDB.LeveldbOptions(create_if_missing=False, error_if_exists=False)
reader = LEVELDB.Leveldb(db_path, options)
def show():
it = reader.get_iterater(reverse=False)
i = 0
for item in it:
print(i, item)
i += 1
def test_find(key):
value = reader.get(key)
print('find', type(value), value)
show()
test_find(b'input_0')
test_find(b'input_5')
test_find(b'input_10')
reader.close()
test_write(db_path)
test_read(db_path)
3. lmdb read and write demo
# -*- coding: utf-8 -*-
# @Time : 2022/9/8 15:49
from tfrecords import LMDB
db_path = 'd:/example_lmdb'
def test_write(db_path):
options = LMDB.LmdbOptions(env_open_flag=0,
env_open_mode=0o664, # 8进制表示
txn_flag=0,
dbi_flag=0,
put_flag=0)
file_writer = LMDB.Lmdb(db_path, options, map_size=1024 * 1024 * 10)
keys, values = [], []
for i in range(30):
keys.append(b"input_" + str(i).encode())
keys.append(b"label_" + str(i).encode())
values.append(b"xiaoming_" + str(i).encode())
values.append(b"zzs_" + str(i).encode())
if (i + 1) % 1000 == 0:
file_writer.put_batch(keys, values)
keys.clear()
values.clear()
if len(keys):
file_writer.put_batch(keys, values)
file_writer.close()
def test_read(db_path):
options = LMDB.LmdbOptions(env_open_flag=LMDB.LmdbFlag.MDB_RDONLY,
env_open_mode=0o664, # 8进制表示
txn_flag = 0, # LMDB.LmdbFlag.MDB_RDONLY
dbi_flag=0,
put_flag=0)
reader = LMDB.Lmdb(db_path, options, map_size=0)
def show():
it = reader.get_iterater(reverse=False)
i = 0
for item in it:
print(i, item)
i += 1
def test_find(key):
value = reader.get(key)
print('find', type(value), value)
show()
test_find('input0')
test_find('input5')
test_find(b'input10')
reader.close()
test_write(db_path)
test_read(db_path)
4. arrow demo
Stream
from tfrecords.python.io.arrow import IPC_Writer,IPC_StreamReader,arrow
path_file = "d:/tmp/data.arrow"
def test_write():
schema = arrow.schema([
arrow.field('id', arrow.int32()),
arrow.field('text', arrow.utf8())
])
a = arrow.Int32Builder()
a.AppendValues([0,1,4])
a = a.Finish().Value()
b = arrow.StringBuilder()
b.AppendValues(["aaaa","你是谁","张三"])
b = b.Finish().Value()
table = arrow.Table.Make(schema = schema,arrays=[a,b])
fs = IPC_Writer(path_file,schema,with_stream = True)
fs.write_table(table)
fs.close()
def test_read():
fs = IPC_StreamReader(path_file)
table = fs.read_all()
fs.close()
print(table)
col = table.GetColumnByName('text')
text_list = col.chunk(0)
for i in range(text_list.length()):
x = text_list.Value(i)
print(type(x), x)
test_write()
test_read()
file
from tfrecords.python.io.arrow import IPC_Writer,IPC_StreamReader,IPC_MemoryMappedFileReader,arrow
path_file = "d:/tmp/data.arrow"
def test_write():
schema = arrow.schema([
arrow.field('id', arrow.int32()),
arrow.field('text', arrow.utf8())
])
a = arrow.Int32Builder()
a.AppendValues([0,1,4])
a = a.Finish().Value()
b = arrow.StringBuilder()
b.AppendValues(["aaaa","你是谁","张三"])
b = b.Finish().Value()
table = arrow.Table.Make(schema = schema,arrays=[a,b])
fs = IPC_Writer(path_file,schema,with_stream = False)
fs.write_table(table)
fs.close()
def test_read():
fs = IPC_MemoryMappedFileReader(path_file)
for i in range(fs.num_record_batches()):
batch = fs.read_batch(i)
print(batch)
fs.close()
test_write()
test_read()
4. parquet demo
from tfrecords.python.io.arrow import ParquetWriter,IPC_StreamReader,ParquetReader,arrow
path_file = "d:/tmp/data.parquet"
def test_write():
schema = arrow.schema([
arrow.field('id', arrow.int32()),
arrow.field('text', arrow.utf8())
])
a = arrow.Int32Builder()
a.AppendValues([0, 1, 4, 5])
a = a.Finish().Value()
b = arrow.StringBuilder()
b.AppendValues(["aaaa", "你是谁", "张三", "李赛"])
b = b.Finish().Value()
table = arrow.Table.Make(schema=schema, arrays=[a, b])
fs = ParquetWriter(path_file, schema)
fs.write_table(table)
fs.close()
def test_read():
fs = ParquetReader(path_file,options=dict(buffer_size=2))
table = fs.read_table()
fs.close()
table = table.Flatten().Value()
print(table)
col = table.GetColumnByName('text')
text_list = col.chunk(0)
for i in range(text_list.length()):
x = text_list.Value(i)
print(type(x),x)
test_write()
test_read()
Metadata
Release files for tfrecords 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 232.3 MB
Release files / tfrecords-0.3.1-cp314-cp314-win_amd64.whl
| Download URL | tfrecords-0.3.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 14.4 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0d6a7e677243630c9575ae525125261d1e1d94da070deda45701b842479f1815
|
|
BLAKE2b-256 checksum How to use checksums |
fa869d54c95baeae51099e057e8c8fb437363aa8769c325ffdb76477ccdcc807
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.9
|
Release files / tfrecords-0.3.1-cp314-cp314-manylinux2014_x86_64.whl
| Download URL | tfrecords-0.3.1-cp314-cp314-manylinux2014_x86_64.whl |
|---|---|
| Size | 18.2 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
da1d1f078cf80e7562615370bc935412ed847d7282e4f6164703691509379194
|
|
BLAKE2b-256 checksum How to use checksums |
bfed9102411720c3b8dfd81b4035e34e47e896242c54f7586541cead61f5f4d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp314-cp314-manylinux2014_aarch64.whl
| Download URL | tfrecords-0.3.1-cp314-cp314-manylinux2014_aarch64.whl |
|---|---|
| Size | 14.3 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
93bc19648e4a23923f592c5338862d73b414aa036651a3497685c01f74e264d1
|
|
BLAKE2b-256 checksum How to use checksums |
cac00c88861b8083e337e97f7f1c7604d0f6bc76f71c5494807612a8193954fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp313-cp313-win_amd64.whl
| Download URL | tfrecords-0.3.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 13.8 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a770699ec43c62c114073c66c4f6e55ff41e10aa37261d8e7ba2766f732fbe2c
|
|
BLAKE2b-256 checksum How to use checksums |
4011c097875595f06109d3980653d99be6a0def26114474acfbbe3da0767c3a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.9
|
Release files / tfrecords-0.3.1-cp313-cp313-manylinux2014_x86_64.whl
| Download URL | tfrecords-0.3.1-cp313-cp313-manylinux2014_x86_64.whl |
|---|---|
| Size | 18.2 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c9f9ab44570c83a1d0b815654cc126adcf14361c494f7f0d79152392951ceff1
|
|
BLAKE2b-256 checksum How to use checksums |
0a813117e84c669e275ba2fab6fba42c0f6a0ad558efe02b0d896d800c7d06ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp313-cp313-manylinux2014_aarch64.whl
| Download URL | tfrecords-0.3.1-cp313-cp313-manylinux2014_aarch64.whl |
|---|---|
| Size | 14.3 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
a0257fda554644ee640558d18c6a872c53f26af301405fb43376b489467f578f
|
|
BLAKE2b-256 checksum How to use checksums |
49782b540d00a71fd9df25159cc9d69168b11c61e551531a7cad07011b418145
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp312-cp312-win_amd64.whl
| Download URL | tfrecords-0.3.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 13.8 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c68509e5938e42a43c00ee81206e9a4c27ab299440fb3c8bdde109399cb51edf
|
|
BLAKE2b-256 checksum How to use checksums |
89a06f6c92f741fbfae4eec7e82d45d0811ef6fe67e419a490863a18efe116a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.9
|
Release files / tfrecords-0.3.1-cp312-cp312-manylinux2014_x86_64.whl
| Download URL | tfrecords-0.3.1-cp312-cp312-manylinux2014_x86_64.whl |
|---|---|
| Size | 18.2 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4fe7255acd4a3fb8e0bb70341b4867fcbccbb03b08f5cf1ab276f271f55a5600
|
|
BLAKE2b-256 checksum How to use checksums |
2111a5c28eb7464afe27915d514c27701b998fefef152af49267fadb0781d9d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp312-cp312-manylinux2014_aarch64.whl
| Download URL | tfrecords-0.3.1-cp312-cp312-manylinux2014_aarch64.whl |
|---|---|
| Size | 14.3 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
0676736e5985c29556ee44ea101c9b4dc20669812e9522dcc9c56d2a5cce5eca
|
|
BLAKE2b-256 checksum How to use checksums |
c69cfc3da624637d28147e86141216508e7eee1bbd96c362b6f739407d1b7e1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp311-cp311-win_amd64.whl
| Download URL | tfrecords-0.3.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 13.8 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
fca790a514ff3164a954647180e6697db81fa51dae185d4573e41dc34bcacf88
|
|
BLAKE2b-256 checksum How to use checksums |
36131a4747c8836dccde306bb96f77aaab6a12b20fcf0ef27115c06936907292
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.9
|
Release files / tfrecords-0.3.1-cp311-cp311-manylinux2014_x86_64.whl
| Download URL | tfrecords-0.3.1-cp311-cp311-manylinux2014_x86_64.whl |
|---|---|
| Size | 18.2 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
29c73ea10589f578d7e5b7613849a79d8c65d2102b48567f3b0a13e757add570
|
|
BLAKE2b-256 checksum How to use checksums |
9c0eb1185e147e32f7eaaa2cc9487e329ef9524c263e3b4e8a5f8103389dced9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp311-cp311-manylinux2014_aarch64.whl
| Download URL | tfrecords-0.3.1-cp311-cp311-manylinux2014_aarch64.whl |
|---|---|
| Size | 14.4 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
2894393d53c8d555ea408408be3e14b05ecd69c6b8205696c52405f96a383ca5
|
|
BLAKE2b-256 checksum How to use checksums |
6b109f143334c42fe76303b05d6235c535ba0c3958500e29fdef44c155a849c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp310-cp310-win_amd64.whl
| Download URL | tfrecords-0.3.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 13.8 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3e21f2824bd6c7ed5813bc761d31d3c56b7b1256cdb685b82aae9e7f99f14733
|
|
BLAKE2b-256 checksum How to use checksums |
da7700fa60e4b65b11adffbd31b666cf9ccd76496ec3b75a80f29aba9e9226fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.9
|
Release files / tfrecords-0.3.1-cp310-cp310-manylinux2014_x86_64.whl
| Download URL | tfrecords-0.3.1-cp310-cp310-manylinux2014_x86_64.whl |
|---|---|
| Size | 18.2 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7abcb42dd23bc4f70ce90dcd6744222f73628e8cc7c8a8b44da59fc58e920c3f
|
|
BLAKE2b-256 checksum How to use checksums |
44669417486d2ea41003244ce983f50e727e5659d0f53367c8524cc2d46bce25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tfrecords-0.3.1-cp310-cp310-manylinux2014_aarch64.whl
| Download URL | tfrecords-0.3.1-cp310-cp310-manylinux2014_aarch64.whl |
|---|---|
| Size | 14.4 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
31e8f48fee04526552bb8667ba02707f7ec92b34e740133405f01b9fa97052cb
|
|
BLAKE2b-256 checksum How to use checksums |
fb73232191066e58aead039ff8285e2694fc0da4204c7938736fd107d7ecfbc7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|