我正在使用多处理来提高我使用的程序的计算速度
manager=Manager()
parallel_array_sites=manager.dict()
find_sites()
removal()
find_sites函数正常运行
我的删除功能是
global array_sites
for i in parallel_array_sites:
array_sites.append(i)
#----not very relevant from here on-----
count = 0
remove_sites = {} # dictionary which contains index to remove sites
for i in range(len(array_sites)):
remove_sites[i] = 0
for i in range(len(array_sites)):
if remove_sites[i]:
continue
for j in range(len(array_sites)):
if(j > i and remove_sites[j] == 0):
x = array_sites[i][0] - array_sites[j][0]
y = array_sites[i][1] - array_sites[j][1]
z = array_sites[i][2] - array_sites[j][2]
r = math.sqrt(x*x + y*y + z*z)
if(r < (rmin/1.1)):
count = count + 1
remove_sites[j] = 1
print "after removel",len(array_sites)
#print remove_sites
count = 0
for key,val in remove_sites.iteritems():
if(val == 1):
del array_sites[key-count]
count = count + 1
删除函数要求我使用存储在
parallel_array_sites
作为列表中的元组
array_sites
parallel_array_list中的所有对象都是每个元组 3 个元素 条目的数量可能相当大,这就是为什么我不想在声明multiprocessing.list((时指定大小。
循环
for i in parallel_array_sites:
array_sites.append(i)
不起作用,并给出以下错误:
File "/usr/lib/python2.7/multiprocessing/managers.py", line 774, in _callmethod
raise convert_to_error(kind, result)
KeyError: 1081
需要帮助进行任何更改
已使用
for i in range(len(parallel_array_sites)):
array_sites.append(parallel_array_sites[i])
而是因为
for i in parallel_array_sites:
不适用于字典