Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import threading
- import boto3
- import os
- import base64
- import time
- import random
- import psutil
- BUCKET = '' # <--- YOUR BUCKET NAME HERE
- MIN_WAIT = 1
- MAX_WAIT = 20
- class Boto3Thread(threading.Thread):
- daemon = True
- is_running = True
- def run(self):
- session = boto3.Session()
- s3 = session.resource('s3')
- path = 'test_boto/'
- while self.is_running:
- file_name = path + 'file_' + str(random.randrange(100000))
- content = base64.b64encode(os.urandom(100000)).decode()
- obj = s3.Object(BUCKET, file_name)
- obj.put(Body=content, Metadata={'Content-Type': 'text/plain'})
- obj.delete()
- if not self.is_running:
- # Avoid an useless sleep cycle
- break
- sleep_duration = random.randrange(MIN_WAIT, MAX_WAIT)
- #print('{} will sleep for {} seconds'.format(self.name, sleep_duration))
- time.sleep(sleep_duration)
- def check_memory():
- import gc
- gc.collect()
- process = psutil.Process(os.getpid())
- return process.memory_info().rss / 1024. / 1024.
- def run_pool(size):
- ts = []
- for x in range(size):
- t = Boto3Thread()
- t.start()
- ts.append(t)
- return ts
- def stop_pool(ts):
- for t in ts:
- t.is_running = False
- for t in ts:
- t.join()
- def main():
- ts = run_pool(100)
- try:
- while True:
- print('Process Memory: {:.1f} MB'.format(check_memory()))
- time.sleep(5)
- except KeyboardInterrupt:
- pass
- finally:
- print('Wait for all threads to finish. Should take about {} seconds!'.format(MAX_WAIT))
- stop_pool(ts)
- main()
Advertisement
Add Comment
Please, Sign In to add comment