回答編集履歴

2

追記

2018/09/27 16:15

投稿

opyon
opyon

スコア1009

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

1

追記

2018/09/27 16:15

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -3,3 +3,7 @@
3
3
 
4
4
 
5
5
  リンク先の「共有メモリ(Shared memory)」見る感じ出来そうです
6
+
7
+
8
+
9
+ [プロセス間での状態の共有](https://docs.python.org/ja/3/library/multiprocessing.html#sharing-state-between-processes)