Skip to content

Instantly share code, notes, and snippets.

View naufalafif's full-sized avatar
👍

Naufal Afif naufalafif

👍
View GitHub Profile
@naufalafif
naufalafif / sqlachemy_session_context.py
Last active January 5, 2024 16:20
SQLAlchemy Session Context Manager
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from contextlib import contextmanager
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
import time
def fake_heavy_computation(value):
""" function ini mensimulasikan komputasi berat"""
time.sleep(2) # menunggu 2 detik untuk lanjut ke statement berikutnya
return value
start_time = time.time()
fake_heavy_computation(2)
print(f"selesai dalam {(time.time()-start_time)} detik")
def memoize(func):
""" function ini menerima function lain sebagai argument & menyimpan hasil dari function tersebut"""
memory = {} # variable yang menyimpan hasil dari eksekusi function
def wrapper(*args, **kwargs):
# menyimpan arguments sebagai key dari memory
key = (args,tuple(kwargs))
# jika pemanggilan function serupa ada dimemory maka return hasil dari memory
if key in memory.keys():
memoized_fake_heavy_computation = memoize(fake_heavy_computation)
memoized_fake_heavy_computation(3) # selesai dalam 2 s
memoized_fake_heavy_computation(3) # selesai dalam 4 ms
memoized_fake_heavy_computation(4) # selesai dalam 2 s
[memoized_fake_heavy_computation(3) for _ in range(10000)] # selesai dalam 600 ms
memoized_fake_heavy_computation(3) # selesai dalam 2 s
memoized_fake_heavy_computation(3) # selesai dalam 2 ms
[memoized_fake_heavy_computation(3) for _ in range(10000)] # selesai dalam 600 ms
memoized_fake_heavy_computation(4) # selesai dalam 2 s
import functools
@functools.lru_cache
def fake_heavy_computation(value):
""" function ini mensimulasikan komputasi berat"""
time.sleep(2) # menunggu 2 detik untuk lanjut ke statement berikutnya
return value
import random
def multiply_by_random_number(number):
""" function ini mengambalikan hasil number dikalikan angka random """
return number * random.randint(1, 1000)
multiply_by_random_number(2) # contoh, 925
multiply_by_random_number(2) # contoh, 12
multiply_by_random_number(2) # contoh, 564
multiply_by_random_number(2) # contoh, 623