프로그램 레이블을 여러 번 변경하는 공간의 문제

MM

25 분마다 사용자에게주의를 기울인 다음 5 분 휴식을주는 프로그램을하고 있습니다. 적은 시간 (2 분 미만)으로 코드를 테스트하는 데 모든 것이 잘되었지만 실제로 25 분 동안 테스트하면 이 오류가 발생합니다.

RecursionError : 최대 재귀 깊이를 초과했습니다.

재귀 깊이를 변경해야한다고 생각한 다음 다음과 같이 변경했습니다.

sys.setrecursionlimit(1000000)

그런 다음 실제로 2 분을 초과했지만 약 10 분에 도달했을 때 프로그램이 방금 죽었습니다!

프로그램이 메모리 등의 큰 공간을 차지하기 때문인 것 같지만 어떻게이 문제를 해결할 수 있을까요 !!?

이 아이디어를 이해할 수 있도록 주요 기능을 간략하게 설명하겠습니다.

sec=1500
count=0
def run():
    global sec
    global count
    m,s=divmod(sec,60)   
    if sec >=0:
        m,s=divmod(sec,60)
        lblmin.config(text=str(m).zfill(2))
        lblsec.config(text=str(s).zfill(2))
        sec -= 1
        if sec==-1:
            count += 1
            if count%2 ==0 :   #to know if the timer will do 5 min or 25 min
                confstr=messagebox.showinfo("stert?","timer will start now")
                if confstr:
                    sec=1500
            else: #for break
                runbreak=False
                if runbreak == False:
                    root.attributes("-topmost", True)
                    ask=messagebox.askyesno("break","break for 5 min")
                    runbreak=True
                if runbreak:
                    sec=300


    root.after(1000,run)
    root.mainloop()

아마도 (내 생각에) lblminlblsec 이 바뀌는 엄청난 시간 때문일 수 있지만, 저는이 문제를 고칠 생각이 전혀 없습니다.

도와주세요:(

샘 브로스 터

파이썬은 꼬리 재귀에 최적화되어 있지 않습니다 . 기사에 설명이 있습니다.

실제로 이것은 파이썬이 함수가 자신을 호출 할 수있는 횟수를 제한한다는 것을 의미합니다 (그렇지 않으면 결국 스택 오버플로가 발생할 것입니다). 을 사용하여이 제한을 변경할 수 setrecursionlimit있지만 기본적으로 제한은 항상 존재합니다.

대신 순환 순환을 유지하기 위해 while 루프를 사용하도록 코드를 리팩터링하는 것이 좋습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

yii 응용 프로그램의 비밀번호 변경 페이지 문제

분류에서Dev

스레드의 파이썬 소켓이 항상 제대로 닫히지 않는 이유 (예 : 프로그램을 연속으로 여러 번 실행하는 경우)

분류에서Dev

Python과 셀레늄 : Firefox의 프로필을 여러 번 변경하는 방법

분류에서Dev

Windows에서 한 번에 여러 프로그램을 제거 할 수없는 이유는 무엇입니까?

분류에서Dev

XML 파일을 출력하는 Java 프로그램-여러 문제

분류에서Dev

VBA를 사용하여 한 번에 여러 그래프에서 XY 축과 형식의 동일한 제목을 변경하는 방법은 무엇입니까?

분류에서Dev

`filename` 문을 사용하여 여러 SAS 프로그램 생성

분류에서Dev

라이브러리가 모든 프로그램에 번들로 제공되지 않고 별도로 제공되는 이유는 무엇입니까?

분류에서Dev

DNA 뉴클레오티드의 문자를 변경하는 프로그램

분류에서Dev

여러 문서간에 단어를 연결하는 응용 프로그램이 있습니까?

분류에서Dev

에 REDUX하여 간단한 음식 목록 응용 프로그램을 만드는 문제는 기본 반응

분류에서Dev

fork () 프로그램이 때때로 출력을 여러 번 출력하는 이유는 무엇입니까?

분류에서Dev

공간을 절약하기 위해 여러 프로그램을 단일 바이너리로 컴파일

분류에서Dev

makefile을 사용하여 C ++ 프로그램의 출력 제어

분류에서Dev

git 명령을 사용하여 응용 프로그램의 첫 번째 커밋에 대한 로깅 문을 얻는 방법은 무엇입니까?

분류에서Dev

여러 레이블의 Tkinter 변경 번호

분류에서Dev

배열의 입력으로 10 개의 정수를 사용하는 프로그램을 만들려고합니다. 그러나 내가 그것을 실행하면 첫 번째 입력 후에 닫힙니다. 프로그래밍 입문

분류에서Dev

"next"-문과의 간섭으로 인해 데이터 테이블에서 "next"-버튼을 번역하는 문제

분류에서Dev

간단한 루핑 프로그램에 문제가 있습니다. 두 번째 루프가 예상대로 입력을 허용하지 않습니다.

분류에서Dev

메인 프로그램의 여러 셰이더 프로그램

분류에서Dev

여러 번 사용되는 단일 DAC 필드의 레이블 변경

분류에서Dev

C 프로그램을 사용하여 이동식 장치의 일련 번호를 찾는 방법

분류에서Dev

첫 번째 C 코드는 왜 하나의 변수를 생성하고 두 번째는 3 개의 변수를 생성합니다. 약간의 변경으로 첫 번째 프로그램이 작동하도록하는 방법이 있습니까?

분류에서Dev

다른 프로그램을 사용하여 프로그램의 힙 공간에 액세스하는 방법은 무엇입니까?

분류에서Dev

동일한 프로세스에서 여러 번로드 된 공유 라이브러리의 주소 공간

분류에서Dev

Glade에서 GtkWidget을 복제하여 응용 프로그램에서 여러 번 재사용 할 수 있도록합니다.

분류에서Dev

한 번의 요청으로 여러 번 호출하는 동안 while 루프 문제

분류에서Dev

Bolt 라이브러리를 사용하여 OCaml 프로그램을 로깅하면 corebuild가 완료되면 로그가 제공되지 않습니다.

분류에서Dev

여러 양식의 레이블 색상을 재귀 적으로 변경하는 방법

Related 관련 기사

  1. 1

    yii 응용 프로그램의 비밀번호 변경 페이지 문제

  2. 2

    스레드의 파이썬 소켓이 항상 제대로 닫히지 않는 이유 (예 : 프로그램을 연속으로 여러 번 실행하는 경우)

  3. 3

    Python과 셀레늄 : Firefox의 프로필을 여러 번 변경하는 방법

  4. 4

    Windows에서 한 번에 여러 프로그램을 제거 할 수없는 이유는 무엇입니까?

  5. 5

    XML 파일을 출력하는 Java 프로그램-여러 문제

  6. 6

    VBA를 사용하여 한 번에 여러 그래프에서 XY 축과 형식의 동일한 제목을 변경하는 방법은 무엇입니까?

  7. 7

    `filename` 문을 사용하여 여러 SAS 프로그램 생성

  8. 8

    라이브러리가 모든 프로그램에 번들로 제공되지 않고 별도로 제공되는 이유는 무엇입니까?

  9. 9

    DNA 뉴클레오티드의 문자를 변경하는 프로그램

  10. 10

    여러 문서간에 단어를 연결하는 응용 프로그램이 있습니까?

  11. 11

    에 REDUX하여 간단한 음식 목록 응용 프로그램을 만드는 문제는 기본 반응

  12. 12

    fork () 프로그램이 때때로 출력을 여러 번 출력하는 이유는 무엇입니까?

  13. 13

    공간을 절약하기 위해 여러 프로그램을 단일 바이너리로 컴파일

  14. 14

    makefile을 사용하여 C ++ 프로그램의 출력 제어

  15. 15

    git 명령을 사용하여 응용 프로그램의 첫 번째 커밋에 대한 로깅 문을 얻는 방법은 무엇입니까?

  16. 16

    여러 레이블의 Tkinter 변경 번호

  17. 17

    배열의 입력으로 10 개의 정수를 사용하는 프로그램을 만들려고합니다. 그러나 내가 그것을 실행하면 첫 번째 입력 후에 닫힙니다. 프로그래밍 입문

  18. 18

    "next"-문과의 간섭으로 인해 데이터 테이블에서 "next"-버튼을 번역하는 문제

  19. 19

    간단한 루핑 프로그램에 문제가 있습니다. 두 번째 루프가 예상대로 입력을 허용하지 않습니다.

  20. 20

    메인 프로그램의 여러 셰이더 프로그램

  21. 21

    여러 번 사용되는 단일 DAC 필드의 레이블 변경

  22. 22

    C 프로그램을 사용하여 이동식 장치의 일련 번호를 찾는 방법

  23. 23

    첫 번째 C 코드는 왜 하나의 변수를 생성하고 두 번째는 3 개의 변수를 생성합니다. 약간의 변경으로 첫 번째 프로그램이 작동하도록하는 방법이 있습니까?

  24. 24

    다른 프로그램을 사용하여 프로그램의 힙 공간에 액세스하는 방법은 무엇입니까?

  25. 25

    동일한 프로세스에서 여러 번로드 된 공유 라이브러리의 주소 공간

  26. 26

    Glade에서 GtkWidget을 복제하여 응용 프로그램에서 여러 번 재사용 할 수 있도록합니다.

  27. 27

    한 번의 요청으로 여러 번 호출하는 동안 while 루프 문제

  28. 28

    Bolt 라이브러리를 사용하여 OCaml 프로그램을 로깅하면 corebuild가 완료되면 로그가 제공되지 않습니다.

  29. 29

    여러 양식의 레이블 색상을 재귀 적으로 변경하는 방법

뜨겁다태그

보관