비동기

Category
아이템: 
포스트 갯수3

[Python] 비동기 작업큐와 Global 객체에 관한 고찰

By 지훈현서 | 2017년 6월 27일 | 
[Python] 비동기 작업큐와 Global 객체에 관한 고찰
지난번 비동기 작업 큐를 살펴보면서 Celery 대신 간단한 파이썬의 RQ를 살펴본 적이 있습니다.이것을 사용하다가 이번에 새로운 곳에 진행을 하려다 보니다음과 같은 경우가 생겼습니다. G_H = None def mytask(*args, **kwargs): if G_H is None: G_H = MyHandle() G_H.do() 위와 유사한 경우가 생겼습니다. 즉, G_H가 어떤 글로벌 인스턴스를 갖고이를 mytask 라는 태스크 수행 함수에서초기화 된 것을 계속 이용한다는 개념입니다. Singleton 패턴에서 잘 사용하고는 하지요.위에서는 글로벌로 해결하려고 합니다만... 위와 같은 접근이 RQ에서는 전혀 동작하지 않습니다. 작업 워커는 위와 같은 코드가 수행될

[Python] Redis rq 를 이용한 간단한 비동기 작업 큐

By 지훈현서 | 2017년 5월 17일 | 
[Python] Redis rq 를 이용한 간단한 비동기 작업 큐
파이썬에서 비동기 작업 큐 라고 하면 가장 먼저 떠 오르는 것이 Celery 라는 것입니다. 그런데 위에 읽어보면 비동기 큐라기 보다는 "분산 작업 큐" 라는 것이 더 정확한 말입니다. 분산이라는 의미로 어떤 작업을 특정 큐에 넣으면 네트워크 환경에서 이를 여러 워커들이 다양한 우선순위를 갖고이를 처리한다는 의미이지요. 그런데 최근에 이런 분산의 목적 보다는 정말로 단순한 작업 대기 큐로서 비동기 작업 큐가 필요하게 되었습니다. 간단히 찾아보니, RQ 라는 것이 있었습니다. 위의 홈페이지에 있는 것이 감이 잘 안잡혀 살펴보다가 원 소스에 있는 예제를 살펴보았습니다. 이 예제를 돌리는데 필요한 것은redis 서버와 파이썬 redis, rq 모듈입니다. 맥에서는 간단히 $ brew install

Qt - Thread를 GUI에서 효율적으로 사용하는 방법

By 이것저것 | 2017년 2월 13일 | 
참조 사이트 - Qt - Project : Threading Basics [클릭] C#도 그렇고 Qt도 그렇고 버전이 올라갈 때마다 더 많고 합리적인 라이브러리가 추가(수정)됩니다. Qt는 이전부터 그래왔지만, 기본 스레드에서 GUI의 도구에 접근할 때면 여러 경고 메시지를 내뿜습니다. 가령, 아래처럼 말이죠. 12QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another threadcs 그렇기에, 굳이 스레드가 필요하다면 아래 사이트를 참조해 별도의 스레드를 구현할 필요가 있습니다. Timer는 독립적으로 구동되어야 합니다. GUI의 도구에 영향을 미쳐서도 안 되겠죠. 12345678910111213