Python 11

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

파이썬을 이용해서 디렉토리 안의 파일들 이름 바꾸기! (리눅스에서)

디렉토리 안의 파일들의 이름을 바꾸기 위해서는 여러가지 방법이 있습니다. 리눅스 안에서는 mv 커맨드를 사용할 수 있고, rename 등 여러가지 다른 커맨드들을 활용할 수 있을 것 같습니다. 또, 리눅스 커맨드로 for loop를 사용할 수 있다고 합니다. (해보진 않았습니다.) 관련 코드 : # Declares variable with value set to 1 i=1 # Scans each text file in the working directory for file in *.txt; # Iterate the command below until all files are scanned do # Renames each file with "File" followed by incrementing numbe..

Utils 2022.01.19

Node.js로 .env 활용하기

사용하는 이유: 개발서버에서 잘 돌아가던 서버가 라이브 프로덕션 서버에서 안돌아가는 것을 확인하였습니다. 확인해보니, 개발서버에서 Node.js 에서 Python process를 콜하기 위해서 파이썬을 부르는 과정에서 절대경로를 사용해야만 돌아가야 하는 라이브러리가 있었는데, (로깅과 nssm 서비스 관련) 파이썬 절대경로의 위치가 개발서버와 라이브서버가 다르기 때문이었습니다. 물론 이를 해결하는 방법으로는 여러 가지가 있겠지만, 가장 바람직한 방법으로는, .env 파일과 같은 파일을 만들어놓고, 그 파일에서 변수들을 가져오는 방법이 가장 좋은 방법이라고 생각됩니다. .env 파일 같은 경우에는 .gitignore 파일에 적어놓음으로써 업데이트 되지 않도록 합니다. 물론, example.env 같은 파일..

아나콘다 가상환경 클론하기

stackoverflow.com/questions/40700039/how-can-you-clone-a-conda-environment-into-the-root-environment How can you "clone" a conda environment into the root environment? I'd like the root environment of conda to copy all of the packages in another environment. How can this be done? stackoverflow.com 만약 한 가상환경을 다른 컴퓨터의 가상환경으로 옮기고 싶다면 어떻게 해야 될까요? 위 스택오버플로우에 의하면 세 가지 방법이 있다고 합니다. root라는 환경을 클론하고 싶다고 ..

환경설정 2021.03.23

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

Mac에서 Python 관리

원래 python에선 venv를 많이 쓰고, 또 편리합니다. 그냥 그 디렉토리에서만 쓰고, 지우면 되니깐요. python3 -m venv /path/to/new/virtual/environment 한 이후에 생겨나는 directory/bin 폴더로 들어가서 source activate 를 하게 되면 새로운 환경이 생겨나게 됩니다. 하지만 venv의 문제는, 여러 파이썬의 버전을 왔다갔다 하기 힘들다는 점에 있습니다. 그래서 나온게 pyenv입니다. medium.com/python-every-day/python-development-on-macos-with-pyenv-2509c694a808 Python Development on macOS with pyenv UPDATED: May 31, 2020 medi..

환경설정 2020.10.28