В Unix-системах многопроцессорная обработка использует os.fork () для создания дочерних элементов, в Windows она использует некоторую хитрость подпроцесса и сериализацию для обмена данными. Так что, чтобы быть кроссплатформенным, да - он должен быть сериализуемым. Ребенок получит новую копию.
Как говорится, вот пример:
from multiprocessing import Process
import time
class Starter(object):
def __init__(self):
self.state = False
x = Starter()
class EdgeRenderer(Process):
def __init__(self,starter,*args,**kwargs):
Process.__init__(self,*args,**kwargs)
self.starter=starter
def run(self):
self.starter.state = "HAM SANDWICH"
time.sleep(1)
print self.starter.state
a = EdgeRenderer(x)
a.start()
x.state = True
a.join()
print x.state
При запуске вы увидите:
HAM SANDWICH
True
Таким образом, изменения, которые делает родитель, не сообщаются после fork (), и изменения, которые делает родитель, имеют ту же проблему. Вы должны придерживаться ограничений вилки.