파이썬(9)
-
[파이썬] 메모리 누수와 약한 참조에 대한 나름의 이해
파이썬에서도 메모리 누수가 발생할 수 있다. 예를 들어, 객체의 필드가 다른 객체를 참고하는 서로 참고 하는 경우 del을 해도 제거되지 않는다. gc가 실행되는 건 참조수가 0이어야지만 가능한데 위의 경우는 참조수가 0이 되지 않기 때문이다. 이를 해결하기 위해 약한 참조를 사용한다. 약한 참조는 참조를 하더라도 참조수를 올리지 않는다. 이러한 약한 참조는 순환 참조에 유용하다. 결국 파이썬에서 메모리 누수나 gc등의 문제를 고려하기 위해서는 참조수가 제일 중요하다!!(기본 원리이기 때문이다) 또한 아래와 같은 상황에서 foo()를 호출하게 되면 메모리 누수가 발생할 수 있다. 왜냐하면 파라미터 a의 디폴트가 []인데 여기에 계속 값이 쌓이는 형태로 바뀌기 때문이다. 예를 들어, a[xx, xx] 이런..
2023.10.09 -
[파이썬] Celery에 대한 나름의 이해
Celery는 비동기 분산 처리에 사용된다. broker를 넣어줘야 하는데 redis를 이용할 수 있다. Reference https://beomi.github.io/2017/03/19/Introduction-to-Celery/ [번역]셀러리 입문하기 - Beomi's Tech blog 2017-03-19 [번역]셀러리 입문하기 글 작성 시점 최신 버전 v4.0.2의 문서입니다. 원문: http://docs.celeryproject.org/en/latest/getting-started/introduction.html 셀러리 입문하기 태스크 큐란 무엇인가? (What’s a Task Qu beomi.github.io http://dgkim5360.tistory.com/entry/python-celery-a..
2023.10.07 -
[파이썬] 클래스 메소드에 대한 나름의 이해
method를 안에 다시 사용하는 즉 재귀 함수 또는 class 내 다른 메소드에서 사용하려면 self.method로 붙여줘야 한다.
2023.10.05 -
[파이썬] Class 변수에 대한 나름의 이해
class node: number = None child_nodes = [] value = None def __init__(self, number, value): self.number = number self.value = value 위와 같이 만들면 child_nodes는 모든 객체에서 공유가 된다. 그래서 이를 바탕으로 다음을 실행하면 무한 재귀가 된다. def find_node(self, start_node, target): cur_node = start_node for child_node in cur_node.child_nodes: if target == child_node.number: return child_node return self.find_node(child_node, target) i..
2023.10.05 -
[파이썬] method에 대한 나름의 이해
method는 class 안에 존재하는 객체를 첫번째 인자로 넣어줘야 하는 함수를 의미한다. 크게 bound method와 unbound method로 나뉜다. bound method는 객체.method()로 불러지는 것이고 unbound method는 method(객체, 인자)로 불러지는 것이다. 그리고 method가 실행되어질 때는 현재 클래스부터 찾고 없으면 상위 클래스로 올라가며 찾는다. 두 클래스를 상속받았다면 왼쪽부터 찾는다. B(C) A(C) D(A,B) 라면 D에서 호출하면 D-> A -> B -> C -> Object 순으로 찾는다. Reference https://stackoverflow.com/questions/3786881/what-is-a-method-in-python/378767..
2023.10.04 -
[파이썬] Generator에 대한 나름의 이해
generator를 사용하는 이유는 메모리의 부담을 줄이기 위해서이다. iter 객체이며 next를 하게 되면 그 다음 yield를 준다. send(value)를 하면 그 전 yield에다 그 값을 넣어서 그 다음 yield 값을 준다. Reference http://pythonstudy.xyz/python/article/23-Iterator%EC%99%80-Generator 예제로 배우는 파이썬 프로그래밍 - Iterator와 Generator 1. Iterator 리스트, Set, Dictionary와 같은 컬렉션이나 문자열과 같은 문자 Sequence 등은 for 문을 써서 하나씩 데이타를 처리할 수 있는데, 이렇게 하나 하나 처리할 수 있는 컬렉션이나 Sequence 들을 Itera pythons..
2023.10.03