teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

typo修正

2021/02/01 05:20

投稿

TakaiY
TakaiY

スコア14545

answer CHANGED
@@ -32,8 +32,8 @@
32
32
  return l[idx:idx + n]
33
33
  ```
34
34
 
35
- for文で回しても、1つでリターンしてしまったら、1つしか取得できません。
35
+ for文で回しても、1つでリターンしてしまったら、1つしか取得できません。
36
- 分けたリスト取っておくリストを作って、最後にそれを返すようにします。
36
+ 分けたリスト取っておくリストを作って、最後にそれを返すようにします。
37
37
 
38
38
  ```python
39
39
  #DBに登録する処理
@@ -46,9 +46,9 @@
46
46
  結果返却用のリストを作って、そこにresponseを保存して、最後に返すようにします。
47
47
 
48
48
  ---
49
- で、ざっと直してみました。動かしていないので、間違えているところあるはずですが、正解に近付いているとはおもいます。
49
+ で、ざっと直してみました。動かしていないので、間違えているところあるはずですが、正解に近付いているとはいます。
50
- また、もっと効率のいい書き方などあるのですが、元の方式を残す形にしました。
50
+ もっと効率のいい書き方などあるのですが、元の方式を残す形にしました。
51
- 読み易さを考えて冗長に書いたところもあります。
51
+ また、読み易さを考えて冗長に書いたところもあります。
52
52
 
53
53
  ```python
54
54
  #リスト分ける

1

コメントを受けて修正

2021/02/01 05:20

投稿

TakaiY
TakaiY

スコア14545

answer CHANGED
@@ -6,4 +6,82 @@
6
6
  ・スレッドプールを作る。
7
7
  ・ループで、作った関数と、100個ずつ分けたデータをsubmitする。
8
8
  ・結果をうけとる
9
+
9
-
10
+ ---
11
+ コメントの処理をみてみました。 コメントはインデントなくなっているので、インデントはあつずっぽいです。間にコメントいれます。
12
+
13
+ ```python
14
+ #リスト分ける
15
+ newList = split_list(items,100)
16
+ #スレッドプールを作る
17
+ tpe = ThreadPoolExecutor(max_workers=100)
18
+ ```
19
+ ```python
20
+ for _ in range(newList.len):
21
+ tpe.submit(put_to_db)
22
+ tpe.shutdown()
23
+ print("完了")
24
+ ```
25
+
26
+ submitが返すfutureを保存していませが、このfutureで結果を取得できるので、結果が必要なら、保存が必要です。、
27
+
28
+ ```python
29
+ #リストを分ける処理
30
+ def split_list(l, n):
31
+ for idx in range(0, len(l), n):
32
+ return l[idx:idx + n]
33
+ ```
34
+
35
+ for文で回しても、1つでリターンウしてしまったら、1つしか取得できません。
36
+ 分けたリストほ取っておくリストを作って、最後にそれを返すようにします。
37
+
38
+ ```python
39
+ #DBに登録する処理
40
+ def put_to_db(Items):
41
+ table = dynamodb.Table('Movies')
42
+ for item in Items:
43
+ response = table.put_item(Item=item)
44
+ ```
45
+ responsで受けた結果をどこにも保存していないので、返してもいません。
46
+ 結果返却用のリストを作って、そこにresponseを保存して、最後に返すようにします。
47
+
48
+ ---
49
+ で、ざっと直してみました。動かしていないので、間違えているところあるはずですが、正解に近付いているとはおもいます。
50
+ また、もっと効率のいい書き方などあるのですが、元の方式を残す形にしました。
51
+ 読み易さを考えて冗長に書いたところもあります。
52
+
53
+ ```python
54
+ #リスト分ける
55
+ newList = split_list(items,100)
56
+ #スレッドプールを作る
57
+ tpe = ThreadPoolExecutor(max_workers=100)
58
+
59
+ future_list = []
60
+ for l in newList:
61
+ f = tpe.submit(put_to_db, l)
62
+ future_list.append(f)
63
+ tpe.shutdown()
64
+
65
+ for r in future_list:
66
+ print(r.result)
67
+
68
+ print("完了")
69
+
70
+
71
+ #リストを分ける処理
72
+ def split_list(l, n):
73
+ new_list
74
+ for idx in range(0, len(l), n):
75
+ new_list.append(l[idx:idx + n])
76
+ return nuw_list
77
+
78
+
79
+ #DBに登録する処理
80
+ def put_to_db(item_list):
81
+ result_list = []
82
+ table = dynamodb.Table('Movies')
83
+ for item in Items:
84
+ result = table.put_item(Item=item)
85
+ result_list.append(result)
86
+ return result_list
87
+ ```