回答編集履歴

2

typo修正

2021/02/01 05:20

投稿

TakaiY
TakaiY

スコア13767

test CHANGED
@@ -66,9 +66,9 @@
66
66
 
67
67
 
68
68
 
69
- for文で回しても、1つでリターンしてしまったら、1つしか取得できません。
69
+ for文で回しても、1つでリターンしてしまったら、1つしか取得できません。
70
70
 
71
- 分けたリスト取っておくリストを作って、最後にそれを返すようにします。
71
+ 分けたリスト取っておくリストを作って、最後にそれを返すようにします。
72
72
 
73
73
 
74
74
 
@@ -94,11 +94,11 @@
94
94
 
95
95
  ---
96
96
 
97
- で、ざっと直してみました。動かしていないので、間違えているところあるはずですが、正解に近付いているとはおもいます。
97
+ で、ざっと直してみました。動かしていないので、間違えているところあるはずですが、正解に近付いているとはいます。
98
98
 
99
- また、もっと効率のいい書き方などあるのですが、元の方式を残す形にしました。
99
+ もっと効率のいい書き方などあるのですが、元の方式を残す形にしました。
100
100
 
101
- 読み易さを考えて冗長に書いたところもあります。
101
+ また、読み易さを考えて冗長に書いたところもあります。
102
102
 
103
103
 
104
104
 

1

コメントを受けて修正

2021/02/01 05:20

投稿

TakaiY
TakaiY

スコア13767

test CHANGED
@@ -14,4 +14,160 @@
14
14
 
15
15
  ・結果をうけとる
16
16
 
17
+
18
+
17
-
19
+ ---
20
+
21
+ コメントの処理をみてみました。 コメントはインデントなくなっているので、インデントはあつずっぽいです。間にコメントいれます。
22
+
23
+
24
+
25
+ ```python
26
+
27
+ #リスト分ける
28
+
29
+ newList = split_list(items,100)
30
+
31
+ #スレッドプールを作る
32
+
33
+ tpe = ThreadPoolExecutor(max_workers=100)
34
+
35
+ ```
36
+
37
+ ```python
38
+
39
+ for _ in range(newList.len):
40
+
41
+ tpe.submit(put_to_db)
42
+
43
+ tpe.shutdown()
44
+
45
+ print("完了")
46
+
47
+ ```
48
+
49
+
50
+
51
+ submitが返すfutureを保存していませが、このfutureで結果を取得できるので、結果が必要なら、保存が必要です。、
52
+
53
+
54
+
55
+ ```python
56
+
57
+ #リストを分ける処理
58
+
59
+ def split_list(l, n):
60
+
61
+ for idx in range(0, len(l), n):
62
+
63
+ return l[idx:idx + n]
64
+
65
+ ```
66
+
67
+
68
+
69
+ for文で回しても、1つでリターンウしてしまったら、1つしか取得できません。
70
+
71
+ 分けたリストほ取っておくリストを作って、最後にそれを返すようにします。
72
+
73
+
74
+
75
+ ```python
76
+
77
+ #DBに登録する処理
78
+
79
+ def put_to_db(Items):
80
+
81
+ table = dynamodb.Table('Movies')
82
+
83
+ for item in Items:
84
+
85
+ response = table.put_item(Item=item)
86
+
87
+ ```
88
+
89
+ responsで受けた結果をどこにも保存していないので、返してもいません。
90
+
91
+ 結果返却用のリストを作って、そこにresponseを保存して、最後に返すようにします。
92
+
93
+
94
+
95
+ ---
96
+
97
+ で、ざっと直してみました。動かしていないので、間違えているところあるはずですが、正解に近付いているとはおもいます。
98
+
99
+ また、もっと効率のいい書き方などあるのですが、元の方式を残す形にしました。
100
+
101
+ 読み易さを考えて冗長に書いたところもあります。
102
+
103
+
104
+
105
+ ```python
106
+
107
+ #リスト分ける
108
+
109
+ newList = split_list(items,100)
110
+
111
+ #スレッドプールを作る
112
+
113
+ tpe = ThreadPoolExecutor(max_workers=100)
114
+
115
+
116
+
117
+ future_list = []
118
+
119
+ for l in newList:
120
+
121
+ f = tpe.submit(put_to_db, l)
122
+
123
+ future_list.append(f)
124
+
125
+ tpe.shutdown()
126
+
127
+
128
+
129
+ for r in future_list:
130
+
131
+ print(r.result)
132
+
133
+
134
+
135
+ print("完了")
136
+
137
+
138
+
139
+
140
+
141
+ #リストを分ける処理
142
+
143
+ def split_list(l, n):
144
+
145
+ new_list
146
+
147
+ for idx in range(0, len(l), n):
148
+
149
+ new_list.append(l[idx:idx + n])
150
+
151
+ return nuw_list
152
+
153
+
154
+
155
+
156
+
157
+ #DBに登録する処理
158
+
159
+ def put_to_db(item_list):
160
+
161
+ result_list = []
162
+
163
+ table = dynamodb.Table('Movies')
164
+
165
+ for item in Items:
166
+
167
+ result = table.put_item(Item=item)
168
+
169
+ result_list.append(result)
170
+
171
+ return result_list
172
+
173
+ ```