Skip to content

Serialisation of proxy objects can be improved #4187

@KaiSzuttor

Description

@KaiSzuttor
import io
import pickle


import espressomd
import espressomd.accumulators
import espressomd.observables

class ObsEncapsulator:
    pass

obs = espressomd.observables.ParticlePositions(ids=[0,])
acc = espressomd.accumulators.MeanVarianceCalculator(obs=obs)
enc = ObsEncapsulator()
enc.obs = obs

buff = io.BytesIO()
out = pickle.Pickler(buff)
out.dump(obs)
out.dump(acc)
out.dump(enc)

buff.seek(0)
read = pickle.Unpickler(buff)
obs = read.load()
acc = read.load()
enc = read.load()
buff.close()

print(id(obs))
print(id(acc.get_params()['obs'])) # this is not a reference to 'obs' anymore
print(id(enc.obs)) # this is still a reference to 'obs'

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions