小编Col*_*ark的帖子

合并PHP中的文件块

出于教育目的,我想创建文件块上传。你们怎么知道什么时候全部块都上传了?

我尝试从中移出块temp并重命名它们,以便它们以正确的顺序排列,然后与最后一块合并在一起。但是,我想发送的最后一块不是收到的最后一块。因此fopen(),由于尚未创建块,因此块上失败了,我得到的最终文件的大小恰好是最后一个块的大小。

我相信我可以使用.onloadon事件逐个发送块xhr,这样我什至不必将它们从PHP temp移走,但是我想知道是否有不同的解决方案。

一些基本的代码可以取悦您:

function upload(file) {
  var BYTES_PER_CHUNK = parseInt(2097152, 10),
  size = file.size,
  NUM_CHUNKS = Math.max(Math.ceil(SIZE / BYTES_PER_CHUNK), 1),
  start = 0, end = BYTES_PER_CHUNK, num = 1;

  var chunkUpload = function(blob) {
    var fd = new FormData();
    var xhr = new XMLHttpRequest();

    fd.append('upload', blob, file.name);
    fd.append('num', num);
    fd.append('num_chunks', NUM_CHUNKS);
    xhr.open('POST', '/somedir/upload.php', true);
    xhr.send(fd);
  }

  while (start < size) {
    chunkUpload(file.slice(start, end));
    start = end;
    end = start + …
Run Code Online (Sandbox Code Playgroud)

javascript file-upload chunks

5
推荐指数
1
解决办法
3083
查看次数

如何创建多个 TFRecord 文件而不是制作一个大文件然后将其拆分?

我正在处理相当大的时间序列数据集,准备好的SequenceExamples 然后写入TFRecord. 这会产生一个相当大的文件(超过 100GB),但我希望将其存储在块中。我试过了:

file = '/path/to/tf_record_0.tfrecords'
file_index = 0

   for record in dataset:
      # fill the time series window, prepare the sequence_example, etc.

      if os.path.exists(file) and os.path.getsize(file) > 123456789:
         file = file.replace(str(file_index), str(file_index + 1))
         file_index += 1

            with tf.io.TFRecordWriter(file) as writer:
               writer.write(sequence_example.SerializeToString())
Run Code Online (Sandbox Code Playgroud)

...但是由于TFRecordWriter打开像Python这样的文件,open(file, mode='w')它每次进入with块时都会覆盖自己(除了它是非常丑陋的解决方案),并且从我读到的内容来看,没有办法改变这种行为。更改file内部with块的路径显然会引发错误。

所以我的问题是,有没有办法TFRecord在循环和处理我的数据集时当前达到一定大小时创建下一个文件?TFRecord当我不处理除了系统内存不足之外的任何类型的瓶颈时,拥有较小的文件是否有好处?如果我是正确的,Tensorflow 可以毫无问题地从磁盘读取它(尽管可能还有其他原因,人们更喜欢拥有多个文件)。

我能想到的一件事是在list准备保存的序列中创建某种缓冲区,并在TFRecord该缓冲区达到某个阈值时创建/保存。

python tensorflow tfrecord

5
推荐指数
1
解决办法
2596
查看次数

标签 统计

chunks ×1

file-upload ×1

javascript ×1

python ×1

tensorflow ×1

tfrecord ×1