gpt4 book ai didi

python - Python3多处理进程如何传递变量?

转载 作者:行者123 更新时间:2023-12-01 00:17:30 25 4
gpt4 key购买 nike

我对 Python 还很陌生,但正在尝试学习如何使用多重处理。我有一个方法来计算方法执行的时间,但由于某种原因,列表对象没有被更改。

请参阅下面的代码,我缺少什么?

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 多处理序列化(pickles)参数以将它们传递给多个进程。这意味着每个进程都会获得原始列表的副本。

要实现您想要的效果,只需使用多处理中的特殊共享列表对象即可:

manager = multiprocessing.Manager()
primes = manager.list(range(10))

关于python - Python3多处理进程如何传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59218020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com