###前提・実現したいこと
Python3.5においてmultiprocessingライブラリを使ったスレッドにてリストの要素を追加したいです。
###該当のソースコードと実行結果
Python3.5
1from multiprocessing import Process 2 3class Test_Process(Process): 4 def __init__(self, l): 5 Process.__init__(self) 6 self.l = l 7 def run(self): 8 for i in range(15): 9 self.l.append(i) 10 print('self.l = ', end='') 11 print(self.l) 12 return 13 14r = [29,31] 15t = Test_Process(r) 16t.start() 17t.join() 18print('r = ', end='') 19print(r) 20
上記のコードを実行すると以下のように出力されました。
self.l = [29, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] r = [29, 31]
想定では r の中身は self.l と同じになると思ったのですが上手く動きませんでした。
###試したこと
以下に示すスレッドを使わない普通のクラスを使ったコードは実行すると r に対して要素が追加され思ったとおりになりました。
class Test_Class(object): def __init__(self, l): self.l = l def test_method(self): for i in range(15): self.l.append(i) print('self.l = ', end='') print(self.l) return r = [29,31] t = Test_Class(r) t.test_method() print('r = ', end='') print(r)
実行結果
self.l = [29, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] r = [29, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
スレッドを使ったほうではなぜ動かないのかがわからないので原因を教えてほしいです。
回答1件
あなたの回答
tips
プレビュー