質問するログイン新規登録

回答編集履歴

2

追記

2018/09/27 16:15

投稿

opyon
opyon

スコア1009

answer CHANGED
@@ -2,4 +2,43 @@
2
2
 
3
3
  リンク先の「共有メモリ(Shared memory)」見る感じ出来そうです
4
4
 
5
- [プロセス間での状態の共有](https://docs.python.org/ja/3/library/multiprocessing.html#sharing-state-between-processes)
5
+ [プロセス間での状態の共有](https://docs.python.org/ja/3/library/multiprocessing.html#sharing-state-between-processes)
6
+
7
+ **引数'u' Py_UNICODE Unicode文字(unicode型)**
8
+ 上記は試してみましたか?
9
+
10
+ 但し、**非推奨でPython4では削除予定**とのことなので、Multiprocessで文字列を共有すること自体が非推奨なのではないでしょうか?
11
+
12
+ 思いつく代案は文字列の代わりにint型で文字コードをリスト配列で共有するなどがでしょうか。
13
+ 詳しい方の回答があればいいと思いますし私も知りたいです。
14
+
15
+
16
+ 以下リファレンス
17
+ > num と arr を生成するときに使用されている、引数 'd' と 'i' は array モジュールにより使用される種別の型コードです。ここで使用されている 'd' は倍精度浮動小数、 'i' は符号付整数を表します。これらの共有オブジェクトは、プロセスセーフでありスレッドセーフです。
18
+
19
+ ```
20
+ from multiprocessing import Process, Value, Array
21
+
22
+ def f(n, a):
23
+ n.value = 3.1415927
24
+ for i in range(len(a)):
25
+ a[i] = -a[i]
26
+
27
+ if __name__ == '__main__':
28
+ num = Value('d', 0.0)
29
+ arr = Array('i', range(10))
30
+
31
+ p = Process(target=f, args=(num, arr))
32
+ p.start()
33
+ p.join()
34
+
35
+ print(num.value)
36
+ print(arr[:])
37
+ このサンプルコードを実行すると以下のように表示されます
38
+
39
+ 3.1415927
40
+ [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
41
+ ```
42
+
43
+ [array --- 効率のよい数値アレイ](https://docs.python.org/ja/3/library/array.html#module-array)
44
+ ![イメージ説明](7083ef4f5a182c51bee956463cbf81f5.png)

1

追記

2018/09/27 16:15

投稿

opyon
opyon

スコア1009

answer CHANGED
@@ -1,3 +1,5 @@
1
1
  [PythonのMultiprocessでプロセス間での値の共有](https://qiita.com/t_okkan/items/4127a87177ed2b2db148)
2
2
 
3
- リンク先の「共有メモリ(Shared memory)」見る感じ出来そうです
3
+ リンク先の「共有メモリ(Shared memory)」見る感じ出来そうです
4
+
5
+ [プロセス間での状態の共有](https://docs.python.org/ja/3/library/multiprocessing.html#sharing-state-between-processes)