2011-12-14 3 views
0

저는 프로그래머가 아니지만 프로그래밍 문제에 직면하고 있습니다. 나는 파이썬 코드의 메모리 소비를 줄여야한다. 하나의 옵션은 가변 정밀도를 줄이는 것입니다. 이와 관련하여 :메모리 감소

  1. 부동 소수점 식별 (데이터 유형이 즉석에서 할당 된 것으로 생각됩니다)?
  2. 파이썬은 64 비트 또는 32 비트 부동 소수점을 사용합니까?
  3. 부동 정밀도를 줄이거 나 int로 변환하는 함수는 무엇입니까?

친절하게 도와주세요. 이 질문들은 어리석은 짓일 지 모르지만 프로그래밍에 대한 지식은 매우 적습니다.

감사합니다 ...

+3

숫자가 많은 코드 인 경우 Numpy를 사용해야합니다. –

+4

코드를 게시 한 경우 더 나은 해결책을 제시 할 수 있습니다. 많은 것을 가지고 있다면, 대부분의 모습을 표현할 수 있습니다. (짧게 유지하십시오!) – Jon

+0

안녕하세요, 코드는 거대한 데이터를 사용하며 프로세서는 복잡성을 처리 할 수 ​​없습니다. 이미 Numpy를 사용하고 있습니다. 당신은 당신의 제안을 자세히 설명 할 수 있습니까? – user1098635

답변

1

이미 numpy를 사용하는 경우 당신은 당신이 원하는 유형 (documentation)에 dtype 필드를 설정할 수 있습니다. 타이핑에 약간의 융통성이 생기 겠지만, 일반적으로 파이썬에서 가변 정밀도를 제어하지는 않을 것입니다. Cython에서 정적 유형을 사용하는 구조적 오버 헤드를 원한다면 어떤 행운을 누릴 수도 있습니다. 그러나 프로그래밍에 익숙하지 않은 경우 최상의 경로가 아닐 수도 있습니다.

그 외에도 실제 문제와 관련하여 많은 노력을 기울이지 않았으며 가변 정밀도가 최적화를위한 최적의 장소라고 생각하는 이유는 무엇입니까?

0

순수 CPython (sans numpy 등) float은 C double로 구현됩니다. http://www.ibm.com/developerworks/opensource/library/os-python1/

예, 유형은 변수가 아닌 값과 연결됩니다. isinstance (something, float)를 사용하여 Python 부동 소수점이 있는지 확인할 수 있습니다.

objgraph를 사용하면 무엇이 메모리를 사용하는지 확인할 수 있습니다.

메모리가 누출되거나 가비지 수집 만 필요할 수도 있습니다. 그리고 여러분의 컴퓨터는 메모리가 많지 않을 수 있습니다 - 때로는 제한된 메모리 문제에서 약간의 RAM을 추가하거나 스왑 공간을 조금 더 절약하는 것이 더 경제적 일 수 있습니다.

정확도가 낮은 대체 숫자 표현을 사용하면 도움이 될 가능성이 있습니다 (아마도 http://pypi.python.org/pypi/Simple%20Python%20Fixed-Point%20Module/0.6?).