python
-
Lagom Dependency Injectionpython/lagom 2023. 1. 16. 11:11
python dependency injection library 인 lagom 을 사용해 본다. from abc import ABC from lagom import Container, Singleton class Base(ABC): def show(self): pass class A(Base): def __init__(self) -> None: print('make a') def show(self): print('show a') class A2(Base): def __init__(self) -> None: print('make a2') def show(self): print('show a2') class B: def __init__(self, a: Base) -> None: print('make b') ..
-
AsyncIOpython/응용 2022. 10. 29. 20:27
Guide (udemy 강의) https://www.udemy.com/course/asynchronous-python-with-asyncio (상세 문서) https://superfastpython.com/python-asyncio/ (medium) https://medium.com/better-programming/a-hands-on-guide-to-concurrency-in-python-with-asyncio-af33a795d808 (medium) https://medium.com/dev-bits/a-minimalistic-guide-for-understanding-asyncio-in-python-52c436c244ea 코드 import asyncio import random from asyncio ..
-
ProcessPoolExecutorpython/응용 2022. 10. 29. 18:39
https://medium.com/@mecha-mind/think-twice-before-using-asyncio-in-python-7683472cb7a3 import math import random import time from concurrent.futures import ProcessPoolExecutor def square_array(arr: list[int]) -> list[int]: return [x ** 2 for x in arr] def square_array_in_parallel(arr: list[int], n: int = 4, m: int = 1000) -> list[int]: """ n: number of processes m: number of sub-arrays the array..
-
Python Enumpython/기본 2022. 10. 21. 20:44
import enum @enum.unique class Status(enum.Enum): Active = 1 InActive = 2 class Permission(enum.IntFlag): R = 4 W = 2 X = 1 if __name__ == '__main__': print(Status.Active.value) # 1 print(Status(2)) # Status.InActive for s in Status: print(s) print(Permission.R | Permission.W) # Permission.R|W RW = Permission.R | Permission.W print(Permission.R in RW) # True print(Permission.X in RW) # False
-
Python Closurepython/기본 2022. 10. 21. 20:07
코드1 from typing import Callable def sum(x: int, y: int) -> Callable[[], int]: def runner(): out = x + y print(out) return out return runner if __name__ == '__main__': f = sum(1, 2) f() 코드2 functools.partial() 을 이용해 아래처럼 작성할 수 있다. import functools def sum(x: int, y: int) -> int: out = x + y print(out) return out if __name__ == '__main__': f = functools.partial(sum, 1, 2) f() 설명 scala 의 Closure 와 ..
-
IO & IOResultpython/returns 2022. 9. 4. 22:10
https://returns.readthedocs.io/en/latest/pages/io.html# retry, error recovery 등의 추가 기능을 제공하지 않는 것 같다. 차라리 Result (or ResultE) 를 사용하는 것이 나을 것 같다. ########################################################################### # IO # Some IO never fails, like: getting current date and time, random number, or OS name ########################################################################### import ran..
-
Result & ResultEpython/returns 2022. 9. 4. 21:37
https://returns.readthedocs.io/en/latest/pages/result.htmlscala Either 와 비슷한듯error 를 Exception 으로 고정해 scala Try 처럼 사용해도 좋을 듯, ResultE[T] = Result[T, Exception]Result.do 와 pipe 도 알아두자 (flow 대신에 Result.do 를 사용하자?) from typing import Callablefrom returns.pipeline import flow, pipefrom returns.pointfree import bindfrom returns.result import Result, Success, Failure, ResultEx: ResultE[int] = Success(..