Współużytkowana tablica nie jest współużytkowana poprawnie w wielu procesach Pythona

Eksperymentuję z wieloprocesowością w Pythonie i próbowałem współdzielić tablicę łańcuchów między dwoma procesami. Oto mój kod Pythona:

from multiprocessing import Process, Array, Value
import ctypes

def f1(a, v):
    for i, l in enumerate(['a', 'b', 'c']):
        a[i] = l*3

    v.value += 1

    print "f1 : ", a[:], v.value

def f2(a,v):

    v.value += 1

    print "f2 : ", a[:], v.value

if __name__ == '__main__':
    val = Value(ctypes.c_int, 0)
    arr = Array(ctypes.c_char_p, 3)

    print "Before :", arr[:], val.value

    p = Process(target=f1, args=(arr, val))
    p2 = Process(target=f2, args=(arr, val))

    p.start()
    p2.start()

    p.join()
    p2.join()

    print "After : ", arr[:], val.value

Kiedy uruchamiam skrypt, widzę toarr jest poprawnie wypełniony i dostępny wf1() ale nie wf2(). Oto wynik:

    % python /tmp/tests.py
    Before : [None, None, None] 0
    f1 :  ['aaa', 'bbb', 'ccc'] 1
    f2 :  ['\x01', '\x11', '\x01'] 2
    After :  ['\x01', '\x01', '\x01'] 2

Czy coś przeoczyłem?

Z góry dziękuję za Twoją opinię. :)

questionAnswers(2)

yourAnswerToTheQuestion