Python 10

Python time 라이브러리 활용한 로그 찍기

Python time library를 활용한 로그를 찍는 방법을 알아보도록 하겠습니다. Infinite loop가 돌아갈 때, 처음 time을 저장하고, 예를 들어 while loop이 돌아갈 때마다 처음 time에서 계산된 time을 프린트하는 방법을 알아보도록 하겠습니다. import time if __name__ == "__main__": start_time = time.time() while True: this_time = time.time() time_diff = round(this_time - start_time) print(time_diff) # do something # sleep(1) 쓰고 나니깐 너무 간단하네요 ㅎㅎ

Python 2022.05.10

Python3 에서 Dictionary 새로운 값 입력하기 및 수정

Python에서 Dictionary는 Java의 HashMap과 같은 기능을 하며, 가장 중요한 Data structure (자료구조) 중 하나입니다. Dictionary 를 만들고 나서 Key Value pair를 넣을 때, 두 가지 방법이 있는데, 그것은 value assignment로 subscription을 이용하여 데이터를 넣는 방법과, update를 사용하는 방법 두 가지가 있습니다. # dictionary 생성 this_dict = {} # dictionary value assignment this_dict["k"] = "v" # dictionary update method this_dict.update({"k": "v"}) 둘 다 하는 일은 같습니다. 심지어 새로 만드는 것 뿐만 아니라 있..

Python/Basics 2021.12.17

Python 멀티쓰레딩 Queue를 사용해 봅시다

지난 번 포스팅을 통해서, walkaroundthedevelop.tistory.com/54 queue 와 deque에 대해서 알아보았습니다. multithreading을 하는데에, queue를 자주 쓰는데, 그 방법에 대해서 알아봅시다. 출처 : www.troyfawkes.com/learn-python-multithreading-queues-basics/ my_queue = Queue(maxsize=0) my_queue.put(1) my_queue.put(2) my_queue.put(3) print my_queue.get() my_queue.task_done() # Outputs: 1 여기서 task_done()은 나중에 join() 함수를 위해서 필요합니다. 관련 포스팅 : stackoverflow.c..

Python/Concurrency 2021.03.30

py 파일 pyc로 컴파일 하기

jins-sw.tistory.com/25 kibua20.tistory.com/72 파이썬 파일을 보통 .py 로 실행을 시키지만, 가끔 가다가 pyc 파일이 자동적으로 생성되기도 하고, __cache__ 디렉토리도 생성되는 걸 볼 수 있습니다. pyc 파일로 컴파일하는 경우 C 나 C++을 컴파일하는 것처럼 완벽한 보안성을 자랑하는 건 아니지만, 그래도 어느 정도의 코드를 숨기는 기능을 한다고 합니다. 하지만 다시 디컴파일로 코드를 복원하는 것도 불가능하지는 않다고 합니다. 컴파일 하는 법은, 다음과 같습니다. (터미널에서) python3 -m compileall . 또는, python script를 사용해서 부를 수도 있습니다. In [1]: import py_compile In [2]: py_comp..

Python/Basics 2021.03.30

list 에서 Queue로 옮기기

이 이슈를 접한 것은, 제가 쓰던 프로그램에서 os.listdir을 사용하였기 때문입니다. os.listdir을 사용했을 때 deque를 사용하는 방법은 다음과 같습니다. from collections import deque dq = deque(os.listdir('.')) 하지만 멀티 쓰레드 애플리케이션의 경우에는 deque보다는 queue.Queue를 사용하는게 좋다고 말했습니다. 하지만 queue.Queue(os.listdir('.')) 는 통용되지 않습니다. 그럼 직접 옮겨야 되는데, 다음 참고할 만한 레퍼런스가 있습니다. stackoverflow.com/questions/21639888/is-it-possible-to-convert-list-to-queue-in-python/41581928 im..

Python 2021.03.09

Python 변수 개념(namespace, local, global)

일단 아래 코드를 봅시다. age = 42 name = "Dominic" places = ["Berlin", "Cape Town", "New York"] def info(): print("%s is %i years old." % (name, age)) return info() 보통 python에서 변수는 global, local namespace 두 가지로 나눠질 수 있습니다. local namespace의 변수는 보통 함수 안에 있는 변수를 말하고, global namespace의 변수는 함수 밖의 변수를 말합니다. 하지만 왜 위 함수에서는 함수 안에서(local namepsace), 함수 밖에서(global namespace) 정의한 변수들을 사용하는 걸까요? Python에서는 global namep..

Python/Basics 2021.02.05

Python Multiprocessing - 멀티프로세싱

www.youtube.com/watch?v=fKl2JW_qrso&t=185s 멀티쓰레딩과 거.. 의 똑같다. 키워드만 다를 뿐.. import time import multiprocessing start = time.perf_counter() def something(): print('sleeping..1 second) time.sleep(1) print('Done sleeping') processes = [] for _ in range(10): p = multiprocessing.Process(target=do_something) p.start() processes.append(p) for process in processes: process.join() finish = time.perf_counter..

Python/Concurrency 2020.10.30

Python Multithreading and Multiprocessing - Multithreading

www.youtube.com/watch?v=IEEhzQoKtQU 위는 영어로 된 동영상인데, 영어만 알아듣는다면 굉장히 좋다... 일단 동시성(Concurrency)와 병렬(Parellism)을 구분할 수 있어야 한다. 동시성은, Multithreading을 포함한 asyncronous 한 function들을 말한다. 하지만 암시적으로, 병렬이 아니라는 걸 말한다. 병렬은, 동시성을 포함하는 개념이며, 여러 코어에 프로세스가 돌아갈 수 있게 한다. 즉, 동시성은 한 코어에서 여러 개의 쓰레드가 돌아가는 걸 얘기하지만 병렬은 여러개의 코어 각각에서 각각의 프로세스가 돌아가는 걸 얘기한다. 즉, 동시성은 실제로 cpu가 많이 소모되는 일을 할 때에는 많은 속도향상을 하진 못하고, 그걸 하려면 병렬 프로그래밍..

Python/Concurrency 2020.10.30

Python Threading과 multiprocessing

좋은 글이 있어서 올린다. 한글 버전: pythonstudy.xyz/python/article/24-%EC%93%B0%EB%A0%88%EB%93%9C-Thread 예제로 배우는 파이썬 프로그래밍 - 쓰레드 (Thread) 쓰레드 (Thread) 파이썬 프로그램은 기본적으로 하나의 쓰레드(Single Thread)에서 실행된다. 즉, 하나의 메인 쓰레드가 파이썬 코드를 순차적으로 실행한다. 코드를 병렬로 실행하기 위해서는 별도의 pythonstudy.xyz 영어 : realpython.com/intro-to-python-threading/ An Intro to Threading in Python – Real Python In this intermediate-level tutorial, you'll lear..

Python/Concurrency 2020.10.21