Hello

question about copy vs deepcopy used in multithreaded context:

suppose the following program below:

the original dictionary is modified after the thread is started, the thread works on a copied and deepcopied version of the original dictionary. Is the dictionary named "originalcopy" isolated from changes in original in multithreaded context?

The program reports no errors but I want to be really sure about this

Thanks
Carl.




<snip>

original = {}
originalcopy = {}
originaldeepcopy = {}

class checker(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
    pass
  def run(self):
    while True:
      for i in originaldeepcopy:
        if originalcopy[i] == originaldeepcopy[i]:
          pass
        else:
          print "error", originalcopy[i], "Not equal to", originaldeepcopy[i]

i = 0          
while i<1000:
  original[i] = i
  i = i + 1

originalcopy     = copy.copy(original)
originaldeepcopy = copy.deepcopy(original)

test = checker()
test.start()

time.sleep(0.5)
 
while True:  
  i = 0
  while i<1000:
    original[i] = i*2
    i = i + 1
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to