ec2-compare 1.0.0a9

Creator: bigcodingguy24

Last updated:

Add to Cart

Description:

ec2compare 1.0.0a9

ec2-compare




Compare EC2 instances families without querying AWS API
Example:

Getting on instances by parameters

import ec2_compare.mixin
req = ec2_compare.mixin.EmrRequestMixin().ec3__get_machines(
max_instances=5, # maximum number of machines
# reuest parameters
**{
'cpu': 40, 'ram': 786432, 'min_cpu': 8, 'min_ram': 65536,
'InstanceType': ['c4', 'c5.', 'r4', 'r5.', 'm4', 'm5.'],
'SupportedArchitectures': ['x86_64'], 'SupportedUsageClasses': 'spot'
})


Getting on instances suitable for on-demand

>>> import ec2_compare.internal.on_demand
>>> ec2_compare.internal.on_demand.get_instances_dict()[0]['InstanceType']
'm5d.xlarge'

Why it's more memory & CPU efficient
1). ec2-compare

Memory (penalty 8.1 Mb - 8175616 bytes)

>>>
def getCurrentMemoryUsage():
''' Memory usage in Bytes '''
import psutil
import os
process = psutil.Process(os.getpid())
return process.memory_info().rss
>>> getCurrentMemoryUsage()
9535488
>>> import ec2_compare.ec2data
>>> getCurrentMemoryUsage()
17641472
>>> len(ec2_compare.ec2data.get_instances_dict())
341
>>> getCurrentMemoryUsage()
17711104


Load time:

>>> import timeit
>>> timeit.timeit('import ec2_compare.ec2data;len(ec2_compare.ec2data.get_instances_dict())', number=1)
0.0028156930000000635
>>> timeit.timeit('import ec2_compare.ec2data;len(ec2_compare.ec2data.get_instances_dict())', number=1)
0.001711632000002794
>>> timeit.timeit('import ec2_compare.ec2data;len(ec2_compare.ec2data.get_instances_dict())', number=1000)
0.8330168470000032
>>> timeit.timeit('import ec2_compare.ec2data;len(ec2_compare.ec2data.get_instances_dict())', number=1000)
0.8174298469999997

2). Reading from json file:

Memory (penalty 2.5 Mb - 2592768 bytes)

>>> getCurrentMemoryUsage()
9379840
>>> import json
>>> with open("./helpers/aws_ec2.json") as json_file:
... json.load(json_file)
...
>>> getCurrentMemoryUsage()
11972608


Load time:

>>> import timeit
>>>
s= '''
import json
with open("./helpers/aws_ec2.json") as json_file:
json.load(json_file)
'''
timeit.timeit(s, number=1000)
>>
4.628850890999999

Versioning
ec2_compare follows
PEP 440.
How to build
python -m pip install -e ./[devel]
# or pip install -e ./[devel]

# Running tests
scripts/tests.sh

Update data Locally

Downland the latest info

aws ec2 describe-instance-types | jq '.InstanceTypes' > aws_ec2.json


repack

python3 repack.py

Thank you

https://github.com/actions/ for an awesome github actions
mypy for doing all dirty work for us

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.