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

|
1
追記
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)
|