具有多处理功能的Python全局数组 请考虑以下代码: 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)

具有多处理功能的Python全局数组 请考虑以下代码: 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),python,arrays,multithreading,global,multiprocess,Python,Arrays,Multithreading,Global,Multiprocess,我无法获得我的成功消息,我不知道为什么,我一直收到:(和我的终端打印一个空数组。我认为将数组设置为全局将意味着在myThread()进行任何更改是否应用级别?您正在创建第二个进程,该进程无法访问主进程的数据。您可以使用threading.Thread(target=myThread,),但如果使用多个线程,则必须同步access threading.Lock() 完成后,应该终止线程,并使用athread.join()等待线程 见: 但你不是在使用线程,而是在使用进程。你不能像那样在进程之间共享

我无法获得我的成功消息,我不知道为什么,我一直收到
:(
和我的终端打印一个空数组。我认为将数组设置为全局将意味着在
myThread()进行任何更改
是否应用级别?

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

完成后,应该终止线程,并使用athread.join()等待线程

见:

但你不是在使用线程,而是在使用进程。你不能像那样在进程之间共享数据。太棒了,非常感谢,我刚刚从一个进程切换到另一个线程,并使其正常工作。如果你将此作为答案提交,我很乐意接受线程不会提供任何加速。无论如何,你应该使用Pool.map或similaR