質問編集履歴
2
再現コードを追記しました
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -40,7 +40,57 @@
|
|
|
40
40
|
list1 = pool.starmap(dynMod.ParaProc, multi_args)
|
|
41
41
|
|
|
42
42
|
```
|
|
43
|
+
```ここに言語を入力
|
|
44
|
+
■再現コード
|
|
45
|
+
import types
|
|
46
|
+
import sys
|
|
43
47
|
|
|
48
|
+
|
|
49
|
+
def dynamicModule(Param):
|
|
50
|
+
|
|
51
|
+
spam_module = types.ModuleType('spam', 'dynamic generated module')
|
|
52
|
+
spam_class = """
|
|
53
|
+
def calculation(Num1, Num2):
|
|
54
|
+
|
|
55
|
+
# 計算式
|
|
56
|
+
result = """ + Param + """
|
|
57
|
+
|
|
58
|
+
return result
|
|
59
|
+
|
|
60
|
+
if __name__ == "__main__":
|
|
61
|
+
|
|
62
|
+
calculation(1, 2)
|
|
63
|
+
|
|
64
|
+
"""
|
|
65
|
+
exec(spam_class, spam_module.__dict__)
|
|
66
|
+
sys.modules['spam'] = spam_module
|
|
67
|
+
|
|
68
|
+
return spam_module
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
if __name__ == "__main__":
|
|
72
|
+
|
|
73
|
+
from multiprocessing import Pool
|
|
74
|
+
|
|
75
|
+
Param = 'Num1 * Num2'
|
|
76
|
+
|
|
77
|
+
# DynamicModule生成
|
|
78
|
+
dynamicModule(Param)
|
|
79
|
+
|
|
80
|
+
# DynamicModuleインポート
|
|
81
|
+
import spam
|
|
82
|
+
|
|
83
|
+
# 並列処理数
|
|
84
|
+
pool = Pool(3)
|
|
85
|
+
|
|
86
|
+
# インプットパラメータ
|
|
87
|
+
multi_args = ([2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7])
|
|
88
|
+
|
|
89
|
+
# 並列処理
|
|
90
|
+
list_result = pool.starmap(spam.calculation, multi_args)
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
|
|
44
94
|
### 試したこと
|
|
45
95
|
|
|
46
96
|
・並列処理ではなく、実行すれば正常終了
|
1
試したことを追記
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
### 試したこと
|
|
45
45
|
|
|
46
|
+
・並列処理ではなく、実行すれば正常終了
|
|
46
47
|
・import dynModをDynamicModule()で生成するロジックに差し込んだが、同様のエラーが発生
|
|
47
48
|
・DynamicModule()で生成するロジックでrunpyをインポートし、再度dynModモジュールを読み込ませようとしたが、同様のエラーが発生
|
|
48
49
|
|