Programming Languages/Python

Python 의 GIL (Global Interpreter Lock) Python은 멀티 스레딩 환경에서 두 개이상의 스레드가 동시에 동일한 자원에 접근하는 것을 방지하기 위해 GIL 매커니즘을 사용한다. GIL에 의해 CPU bound 작업을 처리하는 경우 한번에 하나의 스레드만 실행하도록 동작한다. 반면 I/O bound 작업의 경우에는 I/O 작업 중에 GIL가 해제되기 때문에 GIL의 영향이 상대적으로 적다. 이렇게 하나의 스레드만 사용하게 되는 GIL의 제약사항을 극복하기 위해서 Python에서 threading 과 multiprocessing 을 사용했다. 각 Python 의 프로세스가 자체적인 메모리 공간과 GIL 를 가지므로 여러 CPU 코어를 사용한 병렬처리가 가능하다. 그리고 Pytho..
BFS 문제에서의 queue 구현 from collections import deque def bfs(): queue = deque([]) ... sort 내림차순 a = [1,3,2,6,5,10,8] a.sort(reverse=True) sort with lambda 조건 a = [(100,4),(70,3), (80,1), (50,5),(60,2)] a.sort(key= lambda x:x[1]) ''' 결과 [(80, 1), (60, 2), (70, 3), (100, 4), (50, 5)] ''' Permutation (순열) 구현하기 import itertools a = ['A', 'B', 'C'] nPr = itertools.permutations(a,2) ''' 결과 [('A', 'B'), ('..
https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위의 프로세스 문제를 풀다가 좋은 풀이라고 하는 코드에서 any()함수가 등장해서 정리! any() 함수 list 의 원소를 필터링하거나 조건 검사하는데 사용한다. 어떠한 조건을 만족하는 어떠한 원소가 현재 리스트에 있는지 없는지를 Bool 값으로 반환한다. test = [2,5,3,6,7,8,9,1,10] check = any(x > 5 for x in test) print("5보다 큰 어떠한 ..
anaconda 다운로드 https://www.anaconda.com/download#macos Free Download | Anaconda Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine. www.anaconda.com bash shell profiled을 업데이트한다. source ~/.bash_profile conda 가상환경 생성하기 --name "가상환경이름" --python="버전" $ conda create --name "airflow" python="3.10.9" conda 가상환경 삭제하기 conda remo..
https://www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 어렵다.. 출력할 부분만 어떻게 만들어줘야하는지 감이 잘 안와서 어려웠던 문제이다. 또한 모눈종이에서 생각하는 좌표와 실제로 출력해줄 부분에서의 좌표 변환이 어려웠다 (board[x - r1][y - c1]) ㅠㅠ 문제 푸는 아이디어 1. 구현 자체는 소용돌이를 모두 구현한다고 생각하되, 배열은 출력할 크기인 (c2-c1+1) * (r2-r1+1)으로만 초기화해준다. board = [[0] * (c2-c1+1) for _ in range(r2-r1+1)] 그리고 x, y 가 board 범위에 속하는 경우에만 num ..
# 6 # 3 3 3 3 3 3 # 2 3 3 3 3 3 # 2 2 2 3 2 3 # 1 1 1 2 2 2 # 1 1 1 3 3 1 # 1 1 2 3 3 2 n = int(input()) array = [] for i in range(n): array.append(list(map(int, input().split()))) new_array = list(map(list, zip(*array[::-1])))
https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 1. 선수 조합 : permutations 내장 라이브러리로 모든 경우의 수를 구하고 brute force로 확인한다. 2. 점수계산 : 야구의 규칙이해가 바탕이 되어야 했다.. 그래서 어려웠다 ㅎㅎ ㅜㅜ 안타 -> 타자는 1루, 1루에 있던 선수는 2루, 2루에 있던 선수는 3루, 3루에 있던 선수는 홈으로 score += three 2루타 -> 타자는 2루로 진출, 1루에 있던 선수는 3루, 2루에..
Python 으로 간단한 콘솔 프로그램인 ATM 프로그램을 만들어 보았다 ! 예전에는 C++ 으로 객체지향프로그래밍 수업에서 비슷한 은행 프로그램을 만든 적이 있었는데.. 그때보다는 확실히 파이썬으로 하니까 금방금방 만들어진다. 간단하게 잔액 확인/deposit/withdraw 기능을 두고 설계했다. 비밀번호 바꾸기 기능, 계좌번호 찾기 기능도 추가했다. class를 좀 잘 써서 예쁜 객체지향 프로그래밍을 하고 싶었으나, Account class 만든거 이외에 class를 활용을 안했다. 개선한다면 Controller class 정도 만들어서 계좌 작업 처리 관련 함수들 (deposit, withdraw...) 을 묶을 수 있겠다. 객체지향.. 말로는 쉬운데 직접 설계하면 아직도 쉽지가 않다 ㅋㅋ 오랜만..
minjiwoo
'Programming Languages/Python' 카테고리의 글 목록