Python3多处理进程如何传递变量?
我对Python非常陌生,但正在尝试学习如何使用多处理。我有一个方法来计时方法的执行,但是由于某种原因列表对象没有被更改 请参阅下面的代码,我缺少什么Python3多处理进程如何传递变量?,python,python-3.x,python-multiprocessing,Python,Python 3.x,Python Multiprocessing,我对Python非常陌生,但正在尝试学习如何使用多处理。我有一个方法来计时方法的执行,但是由于某种原因列表对象没有被更改 请参阅下面的代码,我缺少什么 def timeMethod(methodToTime, methodVar, methodVar2): start = datetime.now() if methodVar2 == None and methodVar == None: methodToTime() elif methodVa
def timeMethod(methodToTime, methodVar, methodVar2):
start = datetime.now()
if methodVar2 == None and methodVar == None:
methodToTime()
elif methodVar2 == None:
methodToTime(methodVar)
else:
methodToTime(methodVar, methodVar2)
end = datetime.now()
time_elapsed = end - start
print("Seconds Elapsed = ", time_elapsed)
def indirectList(aList):
appendToList(aList)
def appendToList(aList):
aList.append(1)
if __name__ == "__main__":
import sys
primeList = []
print("primeList before execution: " + str(primeList))
p3 = multiprocessing.Process(target=timeMethod, args=(indirectList, primeList, None))
p3.start()
p3.join()
print("primeList after execution: " + str(primeList))
print("Done!")
控制台输出:
primeList before execution: []
Seconds Elapsed = 0:00:00
primeList after execution: []
Done!
进程不共享相同的内存。Python多处理序列化(pickle)参数以将其传递给多个进程。这意味着每个进程都会获得原始列表的副本 要实现所需功能,只需使用多处理中的特殊共享列表对象:
manager = multiprocessing.Manager()
primes = manager.list(range(10))
多处理
不共享状态。它创建了多个python进程,但事实并非如此,你可以在共享内存中分配对象。看见