You are here

실시간 check 를 하는 더 가벼운 방법이 없을까요?

TK 를 이용한 프로그래밍을 하다보면 주기적으로 무언가를 check 해야할 때가 있는데

예를들어서(가상의) exec Findjob 라는 외부 명령어 를 실행하는데 그 결과가 대략 3초후에 return 된다고 가정합니다.

10초마다 Findjob 의 결과를 GUI 상에 표시를 하는 프로그램을 만든다고 가정하면

label .widgL
pack .widgL
set count 0
while {1} {
after 100 ; # 0.1sec update
incr count
if { $count # 10sec execute Findjob
if { $count == 100 } {
.widgL config -text [exec Findjob ]
}
update
}

이런식으로 짜게 되는데 0.1초마다 update 명령어를 실행해야하고 ( 이 sampling time 을 늘려버리면 entry 에 글쓰거나 버튼을 누르는데 렉이 생기고)
게다가 10초마다 한번씩 3초동안 렉이 걸리게 됩니다. 그래서 프로그램의 크기에비해 system 도 많이 잡아먹는거같고요.
after 명령어를 좀더 똑똑하게 쓰면 될거같기도한데 여러가지를 시도해보았지만 명쾌한 해답이 안나오는것같습니다.

10 초동안 기다릴때 update 를 안하고도 GUI 가 유지될 수있으면 더 가볍에 만들 수있고
Findjob 이 수행되는동안 tcl 이 다른일을 할 수있으면 더가볍에 만들 수있을텐데 그 tip 이 있는지 궁금합니다.