백그라운드 실행

게시판 IDL Q&A 백그라운드 실행

5 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #2361 Reply
      chobo
      회원

      안녕하세요.

      많은 데이터 파일들을 순차적으로 읽어서 각각 파일의 그림을 그리려고 합니다.
      예를 들어,
      for i = 0, 1000 do begin
      그림 그리고 ; 다이렉트 그래픽
      endfor
      위 작업을 백그라운드(그림이 그려지는 window가 최상위로 팝업이 안되게끔)에서 돌리면서 같은 PC에서 른 업무를 진행하려고 합니다. 그림이 그려지는 window 창이 최상위 팝업되지 않게 할 수 있나요?
      “idl > 창 > 환경설정 > 일반탭 > 백그라운드에서 항상 실행”을 선택해도, 매번 그림을 그리는 창이 최상위로 올라오게되서 다른 업무를 하는데 방해가 되네요.

      매번 감사합니다.

    • #2364 Reply
      Jonghyuk
      회원

      그림창이 열리는 부분에서
      WINDOW, /PIXMAP

      과 같이 PIXMAP 키워드를 사용하시면 화면에 그림을 표출하지 않습니다. Video Memory 안에 그림을 그립니다. 보이지 않을 뿐 기타 모든 액션은 화면에 띄워놓은 Window와 같습니다.

    • #2365 Reply
      chobo
      회원

      아.. 그렇군요.
      감사합니다.
      그런데, help를 검색해보니, 아래와 같은 note가 있네요.
      MS window에서는 GDI resource (메모리)라는거에 어쩌고저쩌고 영향을 받는다….
      혹시 많은 개수를 그리면 제한이 있을까요? 아니면 반복문 loop안에서 그림 그리는 것을 반복하기때문에 resource를 계속 누적하지는 않아서 괜찮은 것인가요?
      (평소에는 그냥 넘어가는데 갑자기 궁금해지내요. 물론, 저는 무식하게 메몰리 제한 여부를 파악하기 전에 돌리고 볼거지만요~~)
      다시한번, 감사드립니다.

      ——
      PIXMAP
      Set the PIXMAP keyword to specify that the window being created is actually an invisible portion of the display memory called a pixmap.
      Note: On Microsoft Windows systems, the number of pixmap windows that can be created is limited by system GDI resources. The number of pixmap windows IDL can create is constrained by the total amount of GDI memory, the amount of GDI memory used by other applications, and the size of the IDL pixmap windows.

    • #2366 Reply
      Sangwoo
      회원

      반복 횟수가 1000회 정도인 것으로 보이는데, 만약 띄웠던 그래픽창을 그대로 둔 채 또 새로운 그래픽창을 띄우도록 되어 있다면 최종적으로 1000개나 되는 그래픽창이 존재하게 될 것으로 보입니다. 이건 별로 권장할만한 방법은 아닙니다. 다음과 같이 반복문내에서 그래픽창을 띄운 다음 그림 그리는 작업이 다 끝나면 WDELETE 명령으로 닫아주는 것이 좋습니다. 그러면 매 회차마다 띄우고 그리고 없애고 이런 식으로 반복이 될 것이기 때문에 깔끔하게 마무리할 수 있게 됩니다.

      FOR i = 0, 1000 DO BEGIN
      WINDOW, ~~~
      ~~~(그림 그리기 작업)~~~
      WDELETE
      ENDFOR

    • #2368 Reply
      chobo
      회원

      네.. 맞습니다.
      그래서 아래와 같이 LUN(?)을 반복 루프안에서 같이 사용하고 있습니다.
      (실제로, 1개의 창만 띄우려고…)
      아래와 같이 해도, 위에서 말씀하신 효과가 있는 것이지요?
      물론 WDELETE가 가장 깔끔한 방법이긴 합니다만…
      감사합니다.
      ——
      FOR i = 0, 1000 DO BEGIN
      WINDOW, 1, ~~~
      ~~~(그림 그리기 작업)~~~
      ENDFOR

    • #2369 Reply
      Sangwoo
      회원

      예 그런 방법도 괜찮아 보이는군요. 참고로 그 번호를 window index라고 합니다.

5 답변 글타래를 보이고 있습니다
'백그라운드 실행'에 답변달기
글쓴이 정보: