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() 等待线程。
请考虑以下代码:
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() 等待线程。