app/python (51) 썸네일형 리스트형 pickle 1. pickle? 직렬화 : 개체를 메모리, DB, 파일에 저장하기 위해 개체를 바이트 스트림으로 변환하는 프로세스 언어마다 직렬화를 표현하는 단어가 다르다. java : 직렬화 python : 피클링 perl.. etc : 마샬링 사실 마샬링이 가장 큰 개념이다. 직렬화하는 모든 과정을 뜻하는 말이다. 2. 난 json 잘 쓰고 있는데? pickle vs json pickle과 JSON (JavaScript Object Notation) 에는 근본적인 차이가 있다. JSON은 텍스트 직렬화 형식(유니코드 텍스트를 출력하지만, 대개는 utf-8으로 인코딩)인 반면, pickle은 바이너리 직렬화 형식 JSON은 사람이 읽을 수 있지만, pickle은 그렇지 않다 JSON은 상호 운용이 가능하며 파이썬 .. pip multiple versions of dependency resolver problem INFO: pip is looking at multiple versions of to determine which version is compatible with other requirements. This could take a while. INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. If you want to abort this run, you can press Ctrl + C to do so. pip의 dependency resolver 문제로 pip의 최신 버전에서 나타나는 문제이다. 설치하려는 패키지와.. 파이썬 부동소수점 사용시 주의할점 부동 소수점 오류 예 0.1 == 0.1 # True 0.2 == 0.1+0.1 # True 0.3 == 0.1+0.1+0.1 # False 0.4 == 0.2+0.2 # True 0.5 == 0.2+0.2+0.1 # True 0.6 == 0.2+0.2+0.2 # False 0.9 == 0.5+0.4 # True 0.9 == 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 # False 0.1을 100번 더하면 10이 나와야 되는데... 0.1을 정확히 표현할 수 없기 때문에 발생하는 오류입니다. result = 0.0 for i in range(0, 100): result += 0.1 print(result) 이 모든것은 부동 소수점에서 발생하는 문제이다. 소수점 연산은 정확한 연산을 .. array의 연산을 빠르게 하는 방법 import timeit arr = [i for i in range(4000 * 4000)] def slow_sum(): sum = 0 for x in range(4000): for y in range(4000): sum += arr[x + 4000 * y] # print(sum) # 127999992000000 def fast_sum(): sum = 0 for x in range(4000): for y in range(4000): sum += arr[x * 4000 + y] # print(sum) # 127999992000000 timer1 = timeit.Timer('slow_sum()', setup='from __main__ import slow_sum') t1 = timer1.timeit(numb.. Peephole optimization 해당 문서는 https://legacy.python.org/workshops/1998-11/proceedings/papers/montanaro/montanaro.html 를 번역한 것으로, 파이썬의 버전에 따라 결과가 다를 수 있습니다. 원본 문서 python 1.5 버전으로 1998.11월에 작성되었습니다. 파이썬 코드는 간단한 방식으로 고수준 가상 머신에 의해 컴파일 됩니다. 성능을 향상시키기 위해 코드에 peephole optimizer를 적용할 수 있어야 합니다. 이 문서는 기존 바이트 컴파일러와 통합 된 Python으로 작성된 peephole optimization를 조사합니다. 일반적으로, peephole optimization는 opcode의 패턴을 찾아 더 효율적인 코드로 치환해줍니다. p.. The internals of Python string interning 해당 글은 http://guilload.com/python-string-interning/ 를 번역한 글입니다. 해당 글은 Python 2.7.7 버전에서의 인 터닝에 대한 글입니다. 파이썬 버전에 따라 차이가 있을 수 있습니다. 파이썬 최신 버전에 대한 이야기는 https://nephtyws.github.io/python/interning/ 를 보시면 됩니다. 며칠 전 동료에게 내장 함수 intern의 기능을 설명해야 했습니다. >>> s1 = 'foo!' >>> s2 = 'foo!' >>> s1 is s2 False >>> s1 = intern('foo!') >>> s1 'foo!' >>> s2 = intern('foo!') >>> s1 is s2 True 이것은 내부적으로 어떻게 동작할까요? PyS.. wsgi를 왜 쓰나요 "uwsgi를 왜 쓰나요?”라는 질문을 “파이썬에서 통신을 하기 위해 지정한 인터페이스예요”라고 대답을 했지만 … 개인적으로 충분한 대답이 되지 않은 것 같아 이 글을 작성합니다. 해당 글은 “왜”, “어떻게” 그리고 "정말 쓰면 좋아요?”를 주제로 정하고 작성하였습니다. 1. 왜 django의 runserver로 배포 하면 안돼요? django에서는 runserver를 통해 개발 및 테스트를 합니다. 네. runserver는 “개발 및 테스트”가 목적입니다. django의 공식 문서에의 runserver의 글입니다. (https://docs.djangoproject.com/en/2.2/ref/django-admin/#runserver) DO NOT USE THIS SERVER IN A PRODUCTIO.. Python dictionary implementation 해당 글은 http://www.laurentluce.com/posts/python-dictionary-implementation/의 글을 번역한 것입니다. 해당 글의 소스는 python2를 기준으로 작성되었으며 python버전에 따라 다를 수 있습니다. dictionary은 키로 색인되며 연관 배열로 표시될 수 있습니다. dictionary에 3 개의 키 / 값 쌍을 추가해 봅시다 : >>> d = {'a': 1, 'b': 2} >>> d['c'] = 3 >>> d {'a': 1, 'b': 2, 'c': 3} 이 방법으로 값에 액세스 할 수 있습니다. >>> d['a'] 1 >>> d['b'] 2 >>> d['c'] 3 >>> d['d'] Traceback (most recent call last) Fi.. 이전 1 2 3 4 5 ··· 7 다음