• 목록
  • 아래로
  • 위로

안녕하세요?


여러 개의 반복작업을 켜고 끄는 버튼이 있는 GUI를 만들어보려고 하는데요.


asyncio를 이용하여 비동기적으로 구현하면 되는 것인지, multiprocessing을 해야되는 것인지 제가 아직 실력이 부족하여 질문 드려요 ^^



PyQt를 이용하여 원하는 반복작업을 Start / End 할 수 있도록 버튼을 만들려고 합니다.


반복할 작업은 대단한게 아니라, 예컨대 10분 대기한 후에 한 번 ping 테스트를 하는 등 간단한 것입니다.


그런데 반복작업이 하나가 아니라 여러 개에요.


말로 표현하면 애해한데 대략적으로 UI가 다음과 같습니다.




1. 반복작업1 Start 버튼 / End 버튼

2. 반복작업2 Start 버튼 / End 버튼

3. 반복작업3 Start 버튼 / End 버튼

...





각각의 작업 및 이를 끄고 켜는 것은 상호간에 영향을 미치지 않습니다.


우선 제가 궁금한 점은 반복작업의 End 버튼을 눌렀을 때 loop를 정지시키는 것인데요.


동기적으로는 이걸 도저히 구현할 수 없더군요.


loop = True

while loop:

    (반복할 내용)

if 조건:

    loop = False


그래서 제 짧은 생각으로는 비동기적으로 구현해야 할 것 같은데요.


asyncio 라이브러리를 이용하여 네이티브 코루틴으로 비동기적으로 구현하면 되는 것인지, multiprocessing을 해야되는 것인지 잘 모르겠네요.

(처리속도는 중요하지 않습니다.)


어느 쪽으로 공부를 해야 해결되는 문제인지 조언을 부탁드립니다.


아무래도 제 실력을 한참 벗어나는 것 같아서 도저히 감을 못 잡겠네요.


감사합니다! 새해 복 많이 받으세요 ^-^



+) 질문의 취지가 애매한데 어느 방향으로 스크립트를 작성해야 보다 간단하게 완성을 할 수 있는지를 여쭤본 것이었어요~



작성자
이니스프리 119 Lv. (0%) 1893270/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 2

title: 황금 서버 (30일)humit
profile image

일정 주기마다 반복하는 것을 구현하고 싶으시다면 threading 모듈에 있는 Timer를 활용하시면 됩니다.



import threading

class MyTimer:
    def __init__(self, second):
        self.end = False
        self.second = second
    def run(self, msg):
        if self.end:
            return
        # 아래 부분을 원하는 함수에 맞게 수정하시면 됩니다.
        print(msg)
        # 첫 번째 인자는 몇 초 후에 실행할지
        # 두 번째 인자는 어떤 함수를 실행할지
        # 세 번째 인자는 해당 함수의 인자로 전달할 값을 리스트 형태로 넘겨줍니다.
        threading.Timer(self.second, self.run, [msg]).start()

    def stop(self):
        self.end = True

t1 = MyTimer(5)
t1.run("Hello world!")

# 반복 과정을 멈추려면 아래 코드 입력
t1.stop()



comment menu
2019.12.28. 21:20

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → humit
profile image

앗 threading 모듈의 Timer를 활용하면 해결되는 문제이군요~ ㄷㄷ

제가 아직 실력이 부족해서 어떻게 접근해야 되는지 전혀 감을 잡지 못하고 있었는데 정말 감사합니다!

그럼 humit 님께서도 2019년의 마지막 주말 즐겁고 뜻깊게 보내세요 ^-^

comment menu
2019.12.28. 21:32

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 651
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 4329
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4474
902 xlsx 파일로 된 DB백업 데이터를 가져오기로 DB에 넣으려면 어떻게 해야할까요? 4 image 동파육 22.08.31.01:49 127
901 phpMyAdmin 접속시 mysqli_real_connect(): (HY000/1045): Access denied for user '000000'@'localhost' (using password: YES) 4 동파육 22.08.31.00:59 149
900 curl: (7) Failed to connect to localhost port 80: Connection refused 2 image 국내산라이츄 22.07.25.15:57 1564
899 Possible attack detected. This action has been logged. 패널접속하니 메세지가뜨네요 1 막시모 22.07.08.12:58 115
898 LTE 폰에서 3G 수신감도 확인방법?? 8 이니스프리 22.05.01.20:42 499
897 Vesa 마운트를 이용한 미니PC의 거치 4 이니스프리 22.04.07.12:23 274
896 우분투 20.04 cockpit 설치 안됨(해결) gunwook 22.04.01.22:20 113
895 브라우저 익스텐션이 있는 self hosted VPN으로 어떤 것이 있을까요? image 이니스프리 22.03.20.13:57 144
894 백업 파일도 디스크 용량에 포함인가요? 3 마당쇠15 22.03.10.10:52 166
893 DNS 관련 질문 (Netlify, CloudFlare) 5 밍원 22.02.14.15:24 200
892 나리야 빌더로 게임커뮤니티 운영 2 핫슈블로그 22.01.27.08:28 470
891 혹시 라이브러리나 개발자문서 한글 번역 정리 2 제목학원장 22.01.11.13:23 286
890 혹시 파이어베이스 사용하고 계시는 분 있으실까요? 공부에 도움될 만한 개발자 문서가 따로 있을까요? 3 제목학원장 22.01.07.13:57 244
889 호스팅 처음 해보는데 받은 주소를 쓰면 스터디 포 어스 페이지가 나옵니다. 7 yuyu 22.01.05.11:35 329
888 개인 홈페이지를 만들려고 하는데 보통 이미지들 어디서 얻으시나요? 다 만들어서 쓸 수는 없을 것 같고.. 2 yuyu 21.12.31.12:53 283
887 홈페에지가 구글에서 검색되도록 봇이 수집하게 설정했는데 API도 수집하도록 설정해도 되나요? 4 손가락개 21.12.06.03:45 278
886 sfuhost에서 사용 가능한 언어 6 모여라꿈동산 21.11.22.14:43 303
885 index 파일은 어디에 넣어야 되는걸까요? 3 모여라꿈동산 21.11.22.08:44 229
884 홈 서버 운영과 관련하여 사소한 질문 몇 가지가 있습니다. 8 image 제르엘 21.11.22.01:54 344
883 호스팅 신청했는데 초기 설정 어떻게 하는건가요? 5 모여라꿈동산 21.11.21.23:44 182