我正在开发一个网页抓取脚本,为了提高其效率,我正在尝试学习如何在 python 中使用多处理包。
我正在尝试将一组值附加到列表中,并循环遍历多个值以获取列表列表。
这是我当前的代码,但运行后“temp”列表为空,我不明白为什么
temp= []
def square(number):
global temp
x = number * number
print(x)
temp.append([number,x])
numbers = [1,2,3,4]
processes = []
for number in numbers:
process = Process(target=square, args=(number,))
processes.append(process)
process.start()
for proc in processes:
proc.join()
print (temp)
换句话说,我希望我的列表包含我在函数中附加到它的值,但我无法弄清楚为什么它不这样做/如何这样做。
任何帮助将不胜感激
最佳答案
Process
不适合您尝试执行的操作。使用Pool
可以更好地做到这一点。这样您就可以避免从不同的进程中访问该全局变量。
from multiprocessing import Pool
def square(num):
x = num * num
return [num, x]
numbers = [1, 2, 3, 4]
pool = Pool()
results = pool.map(square, numbers)
print(results)
输出为:
[[1, 1], [2, 4], [3, 9], [4, 16]]
关于python - 在 Python 上使用多进程包时,值未附加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56677526/