回答編集履歴
2
追記
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
追記
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)
|