大量のmap型が格納されているitems(リスト)を
parseしてdynamodb(データベース)に書き込みたいです。
実装してみましたが、いまいち性能効果が見られません。
どのように改善すべきでしょうか?
(そもそもマルチスレッドがうまく実装できているのかもわかりません)
python
1"""This is sample program.""" 2import logging 3import boto3 4from concurrent.futures import ThreadPoolExecutor 5 6LOGGER = logging.getLogger() 7LOGGER.setLevel(logging.INFO) 8DYNAMO = boto3.resource('dynamodb') 9 10def lambda_handler(): 11 12 items = [ 13 { 14 'user_name': 'user1', 15 'blog': 'blog1', 16 'count': '111', 17 }, 18 { 19 'user_name': 'user2', 20 'blog': 'blog2', 21 'count': '112', 22 }, 23 { 24 'user_name': 'user3', 25 'blog': 'blog3', 26 'count': '113', 27 } 28 ] 29 """ 30 DynamoDB put item 31 """ 32 try: 33 table_name = "test-batch" 34 35 # put items (use Batch Writing) 36 table = DYNAMO.Table(table_name) 37 38 process_list = [] 39 with ThreadPoolExecutor() as executor: 40 with table.batch_writer(overwrite_by_pkeys=['user_name', 'blog']) as batch: 41 for item in items: 42 process_list.append(executor.submit(batch.put_item(Item=item))) 43 for process in process_list: 44 print(process.result()) 45 return "end" 46 except Exception as error: 47 LOGGER.error(error) 48 raise error 49 50if __name__ == "__main__": 51 lambda_handler()
for i in range(3):みたいに
配下の関数を3回実行するような処理の場合の
並列処理はイメージできますが、リンク内容
上記の1つのitems に対して1000以上オブジェクトがぶらついているときに
どのように分割して処理させるものでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/28 04:22