通过网络传输 python 生成器

Transfer a python generator across a network

有没有办法通过网络传输发电机?假设我有一个随机子集数组的函数

def random_array_generator(array, n):
    rows = np.random.randint(0 , array.shape[0], n)
    sliced_array = array[rows]
    yield sliced_array

然后是

data = random_array_generator(some_array, 100)

有没有办法将 data 发送到远程服务器?我使用 socket 构建了一个基本的 TCP client/server 连接,但 s.send() 需要缓冲区或字符串。抱歉,如果认为我可以将生成器作为该函数的输入是荒谬的。

当然可以。您可以改用 pickle. Specifically, pickle.dumps, which returns the serialized object as a string, so you can send it via socket. If you're running Python 2.x, consider using cPickle,它会快得多。

但是,您似乎无法序列化生成器(至少使用 pickle),因此请考虑使用列表或元组。

希望对您有所帮助。