본문 바로가기 메뉴 바로가기

cryptograph in Daeyeon

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

cryptograph in Daeyeon

검색하기 폼
  • 분류 전체보기 (41)
    • 암호론 (16)
    • 웹해킹 (1)
    • 리버싱 (0)
    • 시스템해킹 (2)
    • 양자컴퓨팅 (6)
      • qiskit (2)
    • write-up (2)
      • wechall (2)
    • Python (11)
    • 차량네트워크 (1)
    • 논문 (2)
    • etc (0)
  • 방명록

python (10)
[python] 11. Asyncio

Asyncio Asyncio는 python에서 정식으로 제공하는 비동기 논블록 I/O를 위한 모듈입니다. 비동기 논블록 처리는 비용 대비를 따져봤을 때 입출력 작업에 가장 효과적이므로 python에서도 비동기 논블록 모듈을 I/O 작업과 연결지어 Asyncio라는 모듈을 만들었습니다. Asyncio는 python 3.4.에서 처음으로 추가되었습니다. 이후 새로운 버전마다 Asyncio에 새로운 문법과 기능들이 추가되고 있습니다. Python 3.4에 추가된 Asyncio를 시작으로 각 버전의 python 비동기 논블록에 대해 살펴봅시다. Asyncio in Python 3.4 Asyncio에는 비동기 처리를 위한 event loop가 존재합니다. 이 event loop에 coroutine으로 만든 작업을..

Python 2021. 7. 29. 17:46
[python] 10. 비동기, concurrent.futures

동기와 비동기, 블록과 논블록 컴퓨터가 작업을 처리하는 방식에는 크게 동기 블록(Synchronous Blocking) 동기 논블록(Synchronous Nonblocking), 비동기 블록(Asynchronous Blocking), 비동기 논블록(Asynchronous Nonblocking) 연산이 있습니다. 일반적으로는 동기 블록 연산을 이용해 작업을 처리합니다. 하지만 동기 블록 연산은 효율적인 작업 처리 방식은 아닙니다. 대부분의 경우에서 가장 효율적인 연산인 비동기 논블록 방식에 대해 살펴보기 전에 동기, 비동기, 블록, 논블록 용어에 대해 간단히 살펴봅시다. 동기 방식은 사용자가 작업을 요청하고 요청된 결과를 받을 때까지 상태를 계속 신경 쓰는 것입니다. 그에 반해 비동기 방식은 사용자가 한번..

Python 2021. 7. 28. 22:00
[python] 9. Coroutine

Coroutine 앞서 살펴본 스레드나 프로세스는 선점형 멀티태스킹을 위해 사용된 개념입니다. 그에 비해 코루틴은 협력형 멀티태스킹을 위해 사용됩니다. 코루틴은 특정 위치에서 실행과 정지를 반복하게 하기위해 여러 진입점과 진출점을 가지고 있는 함수입니다. 일반적인 함수는 한 번 실행되고 한 번 반환되는 반면에 코루틴은 여러 번 실행되고 값을 여러 번 반환할 수 있습니다. 코드레벨에서 살펴보면 코루틴이란 yield를 사용해 값을 입력 받고 반환하는 함수입니다. Function, Generator, Coroutine 일반적인 함수는 한번 실행되고 한번만 종료됩니다. 즉, 한번 반환되면 다시 반환된 위치로 돌아올 수 없습니다. 하지만 코루틴은 yield를 사용하기 때문에 여러 번 반환될 수 있고 여러 번 호출..

Python 2021. 7. 25. 22:24
[python] 8. Multiprocessing

CPython에서 멀티프로세싱을 사용하기 위해서는 multiprocessing 모듈을 사용합니다. multiprocessing 모듈을 사용하면 각각의 작업이 독립된 메모리 공간을 가지며 작업이 수행됩니다. 또한 CPU의 개수만큼 동시에 일을 수행하므로 자원을 최대한 활용할 수 있습니다. 그리고 CPython에서 사용하는 global lock인 GIL의 영향을 받지 않습니다. 따라서 CPython에서 멀티코어를 사용할 때는 스레드보다는 멀티프로세싱을 사용하라고 권고하고 있습니다. 이외에도 멀티프로세싱의 장점으로는 메모리 공간이 프로세스마다 분리되어 있으므로 shared memory를 사용하지 않는 이상 자원의 무결성 문제도 사라집니다. 하지만 단점도 존재합니다. 첫째로 multiprocessing모듈은 스..

Python 2021. 7. 21. 01:53
[python] 7. Thread (2)

지난 포스팅에서 파이썬에서의 스레드 구현에 대해서 알아보았습니다. 2021.07.16 - [Python] - [python] 6. Thread (1) [python] 6. Thread (1) 이번 포스팅에서는 python에서 스레드를 사용하는 방법을 알아보겠습니다. 파이썬에는 CPython, JPython, Pypy등 여러 파이썬이 존재합니다. 어떤 파이썬을 사용하느냐에 따라 스레드의 구현방법이 달 anuirin.tistory.com 이번 포스팅에서는 스레드간에 자원을 공유할 때 자원의 무결성을 보장하기 위한 방법인 lock을 비롯해 Mutex, Semaphore에 대해 살펴보겠습니다. Thread lock 여러 스레드가 공통적으로 사용하는 자원이 있다면 주의해야 합니다. 동시에 여러 개의 스레드가 자원..

Python 2021. 7. 18. 23:36
[python] 6. Thread (1)

이번 포스팅에서는 python에서 스레드를 사용하는 방법을 알아보겠습니다. 파이썬에는 CPython, JPython, Pypy등 여러 파이썬이 존재합니다. 어떤 파이썬을 사용하느냐에 따라 스레드의 구현방법이 달라질 수 있습니다. 이번 포스팅에서는 가장 많이 사용되는 CPython을 기준으로 알아보겠습니다. GIL(Global Intepreter Lock) Thread는 동시성을 위해 만들어졌고, 하나의 프로세스 안에서 여러 개의 스레드를 생성할 수 있습니다. 한 프로세스 안에 생성된 여러 개의 스레드는 프로세스의 자원을 공유합니다. 따라서 자원의 무결성과 동기화처리가 필요합니다. CPython에서는 GIL이 해당 역할을 수행합니다. 자원의 무결성과 동기화처리를 위한 방법인 Lock에는 크게 coarse-..

Python 2021. 7. 16. 00:28
[python] 4. Generator, Iterator

Iterator iterator란 가지고 있는 값을 순차적으로 반복해서 하나씩 반환할 수 있는 개체입니다. python에서는 거의 모든 개체를 iterator로 사용할 수 있게 지원합니다. iterator와 비슷한 개념으로 iterable이 있습니다. 둘은 비슷하지만 다른 개념입니다. iterable란 가지고 있는 값을 한번에 하나씩 반환할 수 있는 개체입니다. 즉 한번에 하나씩 반환할 수도 있지만, 한번에 가지고 있는 값을 모두 반환할 수도 있습니다. iterable의 예시로는 container(list, string, tuple 등..), open files, open socket등이 있습니다. 또한 class에서 __iter__ 나 __getitem__ method를 구현한 경우 이를 iterabl..

Python 2021. 7. 8. 01:03
[python] 3. Decorator

Decorator란 뜻 그대로 장식하기 위한 문법입니다. 즉, 기존의 클래스나 함수를 수정하지 않고 기능을 덧붙일 수 있는 기능을 합니다. 로직을 설계할 때 객체가 특정 작업을 추가할 수 있도록 코드를 작성하는 방식을 패턴화 시킨 것을 decorator pattern이라고 합니다. python에서는 이를 내부의 기능으로 만들어 제공합니다. decorator을 사용하기 위해서는 크게 두가지 구현이 필요합니다. 먼저 함수나 클래스를 인자로 받는 closure를 정의하고 기능을 구현합니다. 그 다음 decorator을 사용하는 함수나 클래스의 선언 바로 윗줄에 @ 키워드를 사용하여 정의한 closure의 이름을 적어줍니다. decorator는 함수나 클래스를 인자로 받고, 이를 실행하기 전이나 수에 원하는 기..

Python 2021. 7. 5. 13:44
[python]2. Basic Pythonic Grammar

Pythonic grammar 조건문 python은 다른 언어들과 같이 if else를 이용해 조건문을 작성하고, 삼항 연산자도 제공합니다. 삼항 연산자를 사용하면 코드의 길이가 줄어들겠지만 이는 항상 좋은 것은 아닙니다. 하지만 간단한 코드라면 삼항 연산자를 사용하는 것도 좋은 방법일 것입니다. def is_int(value): return True if type(value) == int else False def is_string(value): return True if type(value) == str else False def main(): print("Is \"1\" an int class ? %s" % is_int(1)) print("Is \"string\" a str class ? %s" %..

Python 2021. 6. 30. 18:24
[python]1. Pythonic

Pythonic Pythonic 이란 파이썬을 파이썬답고 파이썬스럽게 사용하기 위한 코드 작성 가이드 라인입니다. 코드의 스타일 뿐만 아니라 알고리즘이나 로직을 구현할 때도 보다 파이썬 다운 방법으로 구현하도록 안내하는 방법입니다. Python은 다른 언어에 비해 자유도가 크기 때문에 pythonic이란 개념이 생겨나게 되었습니다. 즉, 어떤기능을 구현할 수 있는 방법이 많다는 뜻입니다. 대표적인 예로는 has_key라는 dictionary안의 key를 찾는 python2 코드는 python3에서 pythonic하지 않다는 이유로 삭제되고 이는 in으로 대체되었습니다. in을 사용하면 has_key보다 영어문장처럼 python code를 작성할 수 있습니다. def main(): capital = {"k..

Python 2021. 6. 28. 23:59
이전 1 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • Qiskit
  • systemhacking
  • 덧셈암호
  • 동시발생지수
  • Quantum entanglement
  • 양자컴퓨터
  • thread
  • 시저암호
  • ACM Computing survey
  • 양자컴퓨팅
  • 비대칭키암호
  • 파이썬암호
  • Quantum Computing
  • 곱셈암호
  • 파이썬 비동기
  • 파이썬문법
  • 파이썬
  • python
  • Encrypted Traffic Analysis
  • 파이썬 문법
  • 전치암호
  • 대칭키암호
  • 암호화
  • 복호화
  • Cryptography
  • ETA 프로젝트
  • pythonic
  • 공개키암호
  • 암호론
  • wechall
more
«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바