質問編集履歴

2

再現コードを追記しました

2020/05/05 07:37

投稿

m_osa
m_osa

スコア4

test CHANGED
File without changes
test CHANGED
@@ -82,6 +82,106 @@
82
82
 
83
83
  ```
84
84
 
85
+ ```ここに言語を入力
86
+
87
+ ■再現コード
88
+
89
+ import types
90
+
91
+ import sys
92
+
93
+
94
+
95
+
96
+
97
+ def dynamicModule(Param):
98
+
99
+
100
+
101
+ spam_module = types.ModuleType('spam', 'dynamic generated module')
102
+
103
+ spam_class = """
104
+
105
+ def calculation(Num1, Num2):
106
+
107
+
108
+
109
+ # 計算式
110
+
111
+ result = """ + Param + """
112
+
113
+
114
+
115
+ return result
116
+
117
+
118
+
119
+ if __name__ == "__main__":
120
+
121
+
122
+
123
+ calculation(1, 2)
124
+
125
+
126
+
127
+ """
128
+
129
+ exec(spam_class, spam_module.__dict__)
130
+
131
+ sys.modules['spam'] = spam_module
132
+
133
+
134
+
135
+ return spam_module
136
+
137
+
138
+
139
+
140
+
141
+ if __name__ == "__main__":
142
+
143
+
144
+
145
+ from multiprocessing import Pool
146
+
147
+
148
+
149
+ Param = 'Num1 * Num2'
150
+
151
+
152
+
153
+ # DynamicModule生成
154
+
155
+ dynamicModule(Param)
156
+
157
+
158
+
159
+ # DynamicModuleインポート
160
+
161
+ import spam
162
+
163
+
164
+
165
+ # 並列処理数
166
+
167
+ pool = Pool(3)
168
+
169
+
170
+
171
+ # インプットパラメータ
172
+
173
+ multi_args = ([2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7])
174
+
175
+
176
+
177
+ # 並列処理
178
+
179
+ list_result = pool.starmap(spam.calculation, multi_args)
180
+
181
+
182
+
183
+ ```
184
+
85
185
 
86
186
 
87
187
  ### 試したこと

1

試したことを追記

2020/05/05 07:37

投稿

m_osa
m_osa

スコア4

test CHANGED
File without changes
test CHANGED
@@ -88,6 +88,8 @@
88
88
 
89
89
 
90
90
 
91
+ ・並列処理ではなく、実行すれば正常終了
92
+
91
93
  ・import dynModをDynamicModule()で生成するロジックに差し込んだが、同様のエラーが発生
92
94
 
93
95
  ・DynamicModule()で生成するロジックでrunpyをインポートし、再度dynModモジュールを読み込ませようとしたが、同様のエラーが発生