아카이브
close
프로필 사진

아카이브

github: @denev6

  • 모두 보기 (161)
    • 일기장 (13)
    • AI (32)
      • study (9)
    • 프로그래밍 언어 (55)
      • Python (30)
      • Go (12)
      • C++ (10)
    • 기타 주제 (52)
      • 웹 (24)
  • 소개
  • 프로젝트
  • 일기장

ctypes: C와 Go를 Python에서

본 글은 아래 환경에서 테스트한 코드로 작성했다.OS: Window 11Python: 3.13.0GCC(MinGW-W64): 13.3.0Go: 1.23.3추가로 MacOS에서도 동일한 코드로 작동하는 것을 확인했다.개요언어(C, Go)를 공유 라이브러리로 빌드한다.컴파일된 라이브러리를 ctypes로 불러온다.사용할 함수의 파라미터 및 리턴 자료형을 정의한다.함수를 호출한다.ctypesctypes는 dll 또는 공유 라이브러리를 불러올 수 있는 Python 내장 라이브러리다. C와 같이 외부 언어로 작성한 코드를 Python에서 실행하도록 도와준다.C to PyC를 공유 라이브러리로// lib.cfloat add_float(float a, float b) { return a + b;}실수를 더하는 간..

  • format_list_bulleted 프로그래밍 언어/Python
  • · 2024. 12. 27.

Go set (CPython의 집합 구현)

PySet은 아주 유용한 자료구조이다. 이를 Go로 Go스럽게 구현하기 위해 CPython의 소스코드와 golang 소스코드를 살펴보았다. set과 map이 뒤에서 어떻게 작동하는지를 살펴보고 가장 합리적인 방법으로 집합을 구현해보려 한다. 문제 Python에는 집합이라는 아주 유용한 구조가 있다. set 객체는 크게 2가지 역할이 있는데, 중복 값을 제거하는 것과 빠르게 값을 탐색하는 것이다. n = [1, 3, 3, 5, 6, 3, 8] n = set(n) print(n) # {1, 3, 5, 6, 8} has_three = (3 in n) print(has_three) # True 하지만 Go는 set을 제공하지 않는다. 따라서 set과 유사하게 작동하는 객체를 만들어보려 한다. 그런데 Go를 곁들..

  • format_list_bulleted 프로그래밍 언어/Go
  • · 2023. 10. 3.

코테에서 Python을 빠르게

Python은 느리다. 그렇기 때문에 Python에 대한 이해도에 따라 코드의 성능이 크게 차이 날 수 있다. 이 번 글에서는 Python의 속도를 향상할 수 있는 방법에 대해 적어보려 한다. 이 글은 각각의 개념에 대해 상세하게 설명하지 않는다. 대신 왜 성능에 문제가 발생하고, 어떻게 해결할 수 있는지에 초점을 두고 작성하였다. JIT 활용 내장 함수 활용 Generator로 메모리 아끼기 for / while보다 빠른 반복 dictionary와 set으로 조회 내장 모듈의 자료구조 빠르게 문자열 합치기 빠른 입출력 global 참조 피하기 dot 줄이기 불필요한 연산, 호출 줄이기 Python은 간결하고 명확한 코드 작성을 지향한다. 위 방법 중 일부 표현은 파이썬스럽(Pythonic)지 않을 수 ..

  • format_list_bulleted 프로그래밍 언어/Python
  • · 2023. 9. 30.

코테에서 Golang을 빠르게

자료의 공간 확보: Slice, Map에 cap 설정하기 빠른 입력: 입력 방식 변경으로 속도 17x 이상 향상 문자열 합치기: Builder를 이용해 속도 71x 이상 향상 정규 표현식: 직접 구현으로 속도 2.6x 이상 향상 함수 인라인 ( < v1.17) 자료의 공간 확보 s := make([]int, 100) // 슬라이스, len: 100, cap: 100 s[i] = val // 값 대입 s := make([]int, 0, 100) // 슬라이스, len: 0, cap: 100 s = append(s, val) // 값 대입 Slice를 생성할 때, 해당 Slice에 저장될 값의 범위를 알 수 있다면 미리 메모리에 공간을 확보하는 것이 유리하다. make는 slice의 형식을 입력받은 후, l..

  • format_list_bulleted 프로그래밍 언어/Go
  • · 2023. 9. 29.

Python 3.12 업데이트

Python 3.12 정식 발표가 2023/10/02에 예정되어 있다. 현재 Python 3.12 0rc3가 공개되었고 여러 업데이트가 이루어졌다. This release, 3.12.0rc3, is the absolutely last release preview for Python 3.12. There will be no ABI changes from this point forward in the 3.12 series. What’s New In Python 3.12 Release, 3.12.0rc3,, Date, September 22, 2023,. This article explains the new features in Python 3.12, compared to 3.11. For full detai..

  • format_list_bulleted 프로그래밍 언어/Python
  • · 2023. 9. 23.

:= assignment expression

참고자료 https://peps.python.org/pep-0572/ https://docs.python.org/ko/3.11/whatsnew/3.8.html 소개 := 대입 연산자를 walrus operator라고 부른다. walrus는 바다코끼리를 뜻하는데 :=이 마치 바다코끼리의 눈과 엄니를 닮아서라고 한다. 정식 명칭은 assignment expression이다. Gopher라면 익숙할 이 대입 연산자는 코드를 간결하게 만들어준다. 다만 Python 3.8에서 도입된 연산자이므로 사용 시 버전에 유의해야 한다. # Without := match = pattern.search(data) if match is not None: print(f"matched pattern: {match}") # With..

  • format_list_bulleted 프로그래밍 언어/Python
  • · 2023. 9. 23.
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • ···
  • 10
  • navigate_next
전체 카테고리
  • 모두 보기 (161)
    • 일기장 (13)
    • AI (32)
      • study (9)
    • 프로그래밍 언어 (55)
      • Python (30)
      • Go (12)
      • C++ (10)
    • 기타 주제 (52)
      • 웹 (24)
Copyright © denev6 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바