Hello, i have question, it’s possible to load object in 1 process et render this object in other object ?
this is my code:
import multiprocessing as m
import pickle
from panda3d.core import *
from direct.showbase.ShowBase import ShowBase
class Store:
pass
class Shareable:
def __init__(self, size = 2**10):
object.__setattr__(self, 'store', m.Array('B', size))
o = Store() # This object will hold all shared values
s = pickle.dumps(o)
store(object.__getattribute__(self, 'store'), s)
def __getattr__(self, name):
s = load(object.__getattribute__(self, 'store'))
o = pickle.loads(s)
return getattr(o, name)
def __setattr__(self, name, value):
s = load(object.__getattribute__(self, 'store'))
o = pickle.loads(s)
setattr(o, name, value)
s = pickle.dumps(o)
store(object.__getattribute__(self, 'store'), s)
def store(arr, s):
for i, ch in enumerate(s):
arr[i] = ch
def load(arr):
l = arr[:]
return bytes(arr)
#tes objects ou structure a partager, voici un exemple
class Foo(Shareable, ShowBase):
def __init__(self):
super().__init__()
def CreateObject(self):
self.m = loader.loadModel("model.bam")
if __name__ == '__main__':
s = Foo()
p = m.Process(target=s.CreateObject, args=())
p.start()
p.join()
s.m.reparentTo(render)