实现写入队列的类似文件的对象

时间:2019-04-01 11:09:55

标签: python multithreading io python-multithreading

我想并行化这段代码:

import numpy as np
import requests

# the 'in memory file' I use at the moment
bytesIO = io.BytesIO()

data = np.random.randint(0, 256, (30, 30))
np.savez(bytesIO, data=data)

# go to the beginning of the buffer again
bytesIO.seek(0)
# upload the file to a different server
requests.post("http://example.org/, files={'file': bytesIO},
              data={'filename': 'My_File'})

在这里

  1. 数据已生成,
  2. 数据在请求中发送。

我希望在将数据序列化到缓冲区时将其传输。可能使用2个线程,由queue连接。

对于传输,请求支持streaming uploads

但是np.savezrequests都希望读取/写入类似文件的对象。队列不是类似于文件的队列,并且BytesIO也不是线程安全的。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

将队列包装在类似文件的自定义对象中。按照文档。该问题有更多详细信息:Creating a custom file like object python suggestions?