0
私は使用していますマルチプロセッシングは、正常に動作している私はmanager.dict()を[[a、b、c]、[q、w、e]、[e、r、t] .......]形式のタプルのリストに変換します。
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
ですin
parallel_array_list内のすべてのオブジェクトは、3つの要素それぞれ のタプルですエントリ数が、私はしたくない理由であるかなり大きくすることができ、リスト内のタプルとして
parallel_array_sites
array_sites代わりに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
変更のいずれかの種類のヘルプを必要と私は
あなたの質問は何のために動作しませんか? –
@SamChats変換エラーのためにforループの関数削除が機能しません。 –
[編集]質問コードを[mcve]まで更新します。 – stovfl