我想在多进程里 共享 多维数组 的内存
1、我想在多进程里 共享 多维数组 的内存2、这个数组是可以 读 + 写 的
我找到挺多的教程好像都只能读不能写{:9_234:} 不能用于Pool,只能用于Process
from multiprocessing import Process, Value, Array
def test(num, mystr, arr):
# 修改整型
num.value *= 2
# 修改字符数组
for i in range(len(mystr)):
mystr = '1'
# 修改浮点型数组
for i in range(len(arr)):
arr = arr * 2
def showVars(num, myStr, floatArr):
print('整型: ', num.value)
print('字符数组: ', myStr[:])
print('浮点型数组: ', floatArr[:])
if __name__=='__main__':
# 初始化
num = Value('i', 2) # 整型
myStr = Array('u', "http://www.1118pc.com") # 字符串(字符数组) 使用'u'
floatArr = Array('d', ) # 浮点型 数组
print('==================初始化:==================')
showVars(num, myStr, floatArr)
# 开启3个进程
ps =
for p in ps:
p.start()
for p in ps:
p.join()
print()
print('==================经过子进程修改后:==================')
showVars(num, myStr, floatArr)
ba21 发表于 2022-3-12 23:13
不能用于Pool,只能用于Process
二维数组呢?二维数组我想共享内存,一维度的没问题{:9_221:} 拽猫的尾巴 发表于 2022-3-13 18:00
二维数组呢?二维数组我想共享内存,一维度的没问题
有1维的列子不会用2维? 拽猫的尾巴 发表于 2022-3-13 18:00
二维数组呢?二维数组我想共享内存,一维度的没问题
转成1维,内部你想当2维使用,你在内部在转城2维。 ba21 发表于 2022-3-13 18:51
转成1维,内部你想当2维使用,你在内部在转城2维。
每曾设想过的道路{:9_229:}
Array只能一维把我思路锁死了 ba21 发表于 2022-3-13 18:51
转成1维,内部你想当2维使用,你在内部在转城2维。
试了下,现在有点不理解的你话{:9_229:}
在内部转成2维的意思是在你的floatArr = Array('d', [[,]])的意思吗
我这样做报错了:TypeError: must be real number, not list
我也试了下把 pandas 的 dataframe 放进去,
但是报错了:TypeError: must be real number, not DataFrame 拽猫的尾巴 发表于 2022-3-14 15:12
试了下,现在有点不理解的你话
在内部转成2维的意思是在你的floatArr = Array('d', [[
python 多进程,只支持1维。
数组这东西不管几维,它都是1维没错吧。 ba21 发表于 2022-3-14 19:24
python 多进程,只支持1维。
数组这东西不管几维,它都是1维没错吧。
但是如果在list里在添加个list,Array的第一个参数好像没有合适的 拽猫的尾巴 发表于 2022-3-15 15:16
但是如果在list里在添加个list,Array的第一个参数好像没有合适的
是的,python 数组的表现形式是 list 。
所我我早说了,在调用多进程前你把多维数组转1维,在每个进程中如果你要以多维的形式操作,你再把1维转多维。 拽猫的尾巴 发表于 2022-3-15 15:16
但是如果在list里在添加个list,Array的第一个参数好像没有合适的
他的意思大概是这样:
arr1 = # 一维,在 Array 里用这个
print(f'一维:{arr1}')
arr2 = list(map(list, zip(* * 3))) # 二维,在进程内部转换成二维使用
print(f'二维:{arr2}')
页:
[1]