2015-09-05 211 views
1

有這個進程之間共享狀態的documentation,但它並沒有完全回答我的問題。我有以下代碼在多進程之間共享進程之間的狀態

from multiprocessing import Process, Value, Array 

#This is my function 
def my_func(my_array): 
    my_array = ["hello", "hi", "howdy"] 

# I am initiating an array called arr that has string elements here 
if __name__ == '__main__': 
    arr = Array('c') 

    p = Process(target=my_func, args=(arr)) 
    p.start() 
    p.join() 

    print(arr[:]) 

我想通過常用3月底等於["hello", "hi", "howdy"],但我的代碼不能正常工作。有誰知道爲什麼?

回答

0

這不行。根據Array documentation,允許的類型do not include strings

另外my_array從指針變爲Array對象變爲指向my_func中字符串數組的指針。

剷球這兩個問題

更合適的方法是:

def my_fun(my_array): 
    my_array[:] = map(ord, ['a','b','c']) 

ord字符映射到一個整數