jsondumpaconcurrentfuturesFuture

2024-04-20 01:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一些未来:

f = concurrent.futures.Future()
data = [f]

最后,我想用JSON转储这些内容,我保证在那时解决了未来问题:

^{pr2}$

我怎么能娶这两个?在


Tags: json内容datafutureconcurrentfuturespr2
2条回答

重写JSONEncoder类并在将来的实例上调用o.result()是一种方法。在

class CustomJSONEncoder(json.JSONEncoder):
    def default(self, o, *args, **kwargs):
        if isinstance(o, concurrent.futures.Future):
            return o.result()
        return super(CustomJSONEncoder, self).default(o, *args, **kwargs)

json.dumps(data, cls=CustomJSONEncoder)

要使它在没有自定义JSONEncoder的情况下工作,您可以自己迭代数据结构,调用o.result()

^{pr2}$

或就地修改data

for i, o in enumerate(data):
    if isinstance(o, concurrent.futures.Future):
        data[i] = o.result()
json.dumps([d.result() for d in data])

相关问题 更多 >