Python 多处理全局数组

Python global array with multiprocessing

请考虑以下代码:

from multiprocessing import Process
import time

myArray = []

def myThread():
    counter = 0
    global myArray
    while True:
        myArray.append(counter)
        time.sleep(1)

counterThread = Process(target=myThread,)
counterThread.start()

while True:
    if len(myArray) > 0:
        print "Success"
    else:
        print ":("
        print myArray   
    time.sleep(1)

我无法收到我的成功消息,我不确定为什么,我一直收到 :( 并且我的终端打印一个空数组。我认为使数组成为全局数组意味着将应用在 myThread() 级别所做的任何更改?

您正在创建第二个进程,该进程无权访问主进程的数据。您可以使用 threading.Thread(target=myThread,),但如果您使用多个线程,则必须同步访问 threading.Lock()。

您应该终止您的线程,当您完成并使用 athread.join() 等待线程。

参见: https://docs.python.org/2/library/threading.html