0
問題へのアクセス:複数のプロセッサから共有配列
私はnew_yの各要素のために、私はそれnew_yのような現在のyと次のy 何かしたいので、すべてのプロセス間でのy共有変数にアクセスしたいです[i] = y [i] + y [i + 1]。現在のプールワーカーが送信した配列yのインデックスを取得するにはどうすればよいですか?
import multiprocessing
num_processes = 2
y = multiprocessing.Array('d', 6, lock=False)
new_y = multiprocessing.Array('d', 6, lock=False)
def init_process(y_to_share, new_y_to_share):
global y, new_y
y = y_to_share
new_y = new_y_to_share
process_pool = multiprocessing.Pool(
num_processes,
initializer=init_process,
initargs=(y, new_y))
dt = 0.0001
def sq():
global y
global new_y
print new_y[0]
print multiprocessing.current_process()
#Here I want to do y at the current index and add the y value of the next index
#something like new_y[i] = y[i]+y[i+1]
process_pool.map(sq, y)
を働くだろう 'multiprocessing'は、「共有」と言うとき、それは本当に各プロセスはプロキシオブジェクトに独自のコピーを取得することを意味し、バックグラウンドしようとしているプロトコルがありますそれをすべて同期させておく。私はほとんどそれが無意味であることがわかります。 – tdelaney
@tdelaneyこれは問題ありませんが、私が現在作業している要素の横にあるその配列の要素にアクセスしたいと言うだけです。例えばiterableではxの値が渡され、xの隣にあるxとその値を共有配列のその値にどのようにしてアクセスできますか?基本的には、マップによって渡されるx値の位置が必要です。 – Kevin
あなたは 'enumerate'でそれを行うことができますが、あなたは共有された' new_y'を全く必要としないようです。あなたのマップは 'pool.map(sq、(y [i:i + 2])iの範囲(len(y)-1))'になります。 – tdelaney