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 

変更のいずれかの種類のヘルプを必要と私は

+0

あなたの質問は何のために動作しませんか? –

+0

@SamChats変換エラーのためにforループの関数削除が機能しません。 –

+0

[編集]質問コードを[mcve]まで更新します。 – stovfl

答えて

0

for i in range(len(parallel_array_sites)): 
    array_sites.append(parallel_array_sites[i]) 
を使用しを行うことができます代わりに

使用

for i in parallel_array_sites: 

辞書

関連する問題