본문 바로가기

languages

(5)
[python] 비동기(async) airflow에서 dag를 짜는데 여러 파일을 s3에서 읽어다가 전처리 후 다시 s3에 적재하는 경우가 많았다. 이 경우 읽고 쓰는데에만 상당한 시간이 걸리는데 파이썬은 GIL(Global Interpreter Lock)때문에 멀티스레딩을 지원하지 않아, 어떻게 이 문제를 풀어나갈 수 있을까 고민하던 찰나에 비동기가 있었지!하고 생각났다 비동기란 무엇일까? 비동기의 가장 큰 목적은 CPU가 I/O 작업에서 들이는 시간 동안 다른 태스크가 CPU를 사용할 수 있게 해주는 것이다. 본래 동기적으로 코드를 짜면 하나의 태스크가 I/O 작업을 하는 동안 Blocking이 되어 다른 태스크가 CPU를 사용하고 싶어도 사용하지 못하게 되는데, 이때 Blocking을 하지 않고 다른 태스크에게 CPU를 내어줘 아까운..
[python] 객체지향 프로그래밍 💡 객체가 뭔지는 감이 온 것 같다. 그렇다면 객체지향 프로그래밍은 뭘까? 1. 객체지향 프로그래밍 좀 더 나은 프로그램을 만들기 위한 프로그래밍 예시로, 내가 네이버 같은 복잡한 웹 사이트를 구축하려고 하는데 간단한 구현부터 시작해 수백 수천 페이지의 웹사이트로 발전되가는 과정에서 객체지향적이지 않다면 대막장이 될 것이다 이 막장을 해결하기 위해 방법을 모색하기 시작함 → 그 방법 중 하나가 객체지향! 이렇게 객체지향으로 프로그래밍을 해놨더니 다른 사이트에서도 가져다 쓸 수 있게 되더라 → 이것이 객체지향의 장점인 재활용성 2. 객체지향 프로그래밍 교육 문법 설계 좋은 설계는 현실을 잘 반영하는 것이며, 현실은 복잡하기 때문에 소프트웨어로 설계하는 것은 어려운게 당연하다. 추상화 - 복잡한 현실을 단순..
[python] 객체와 인스턴스 🤔 객체와 인스턴스의 차이가 뭘까?하는 궁금증이 들어 찾아봤다. 클래스가 설계도라면, 인스턴스는 제품이다. 인스턴스는 구체적인 객체다. 객체(object) - 소프트웨어 개념의 일반적인 인스턴스 - 하나의 작은 프로그램이라고 생각하면 된다 (상태-변수와 행위-메소드 호출의 집합) - 객체를 만든다 = 데이터 타입을 만든다로 말할 수도 있다 인스턴스(instance) - 구체적인 객체 이해를 돕기 위해 django에서 실습한 프로젝트에서 살펴보자 1) 먼저 models.py에서 Question의 설계도를 그린다. class Question(models.Model): # models.Model 상속 question_text = models.CharField(max_length=200) pub_date = m..
[python] inheritance, overriding, super() Q. 왜 부모클래스를 상속받을까? A. 아주 복잡한 경우에, 공통 기능을 받아 수정만하면 된다는 점에서 효율과 편리성이 아아아아주 좋다 1. class 기본 구조 class Person: def __init__(self, height, age, sex): self.height = height # attribute self.age = age selg.sex = sex def get_value(self): # method return self.height * self.age YJ = Person(160,27,"F") JJ = Person(170,26,"M") print(YJ.height, YJ.age, YJ.sex) print(JJ.height, JJ.age, JJ.sex) print(YJ.get_value..
[python] is, == 파이썬의 비교 연산자는 ‘is’ 와 ‘==’ 가 있다. 1. is : id()값을 비교하는 함수 None은 널(null)로서 값 자체가 정의되어 있지 않으므로 ==로 비교가 불가능함! 따라서 is로만 비교 가능 if a is None: pass 2. == : 값을 비교하는 연산자 a = [1,2,3] a == list(a) # True a is a # True a is list(a) # False a == copy.deepcopy(a) # True a is copy.deepcopy(a) # False