티스토리 뷰
Thread 를 상속 받아서 재정의 해주자
self._return 을 join 에서 리턴 해주기 위해서
run 함수에서 _target 의 리턴값을 _return 에 정의 하자
그리고 join 함수에서 _return 을 리턴하자.
join() 함수를 사용해서 순서를 강제하는 경우에만 가능하다.
import threading
import time
from threading import Thread
def foo(t):
i = 0
while i<10:
print(threading.currentThread().getName(), i)
i += 1
time.sleep(t)
return "{} end".format(threading.currentThread().getName())
class ThreadWithReturnValue(Thread):
def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, Verbose=None):
Thread.__init__(self, group, target, name, args, kwargs)
self._return = None
def run(self):
if self._target is not None:
self._return = self._target(*self._args, **self._kwargs)
def join(self, *args):
Thread.join(self, *args)
return self._return
class WorkQueue:
def __init__(self):
self.works = list()
def push(self, cb, *args, **kwargs):
self.works.append([cb, args, kwargs])
def pop(self):
if len(self.works):
work, args, kwargs = self.works.pop(0)
t = ThreadWithReturnValue(target=work, args=args, kwargs=kwargs)
t.start()
return t.join()
works = WorkQueue()
works.push(foo, 0.1)
works.push(foo, 1)
works.push(foo, 3)
print("a", works.pop())
print("b", works.pop())
print("c", works.pop())
'python lecture > basic' 카테고리의 다른 글
[edu] for, comprehension, function 예제 모음 (0) | 2019.01.17 |
---|---|
[edu] 리스트 컴프리헨션 (list comprehensions) (0) | 2019.01.15 |
[edu] decorator 메소드 속성 유지 (0) | 2019.01.09 |
[edu] decoraotr 인자 받기 (0) | 2019.01.09 |
[edu] function (함수) (0) | 2019.01.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 문서 비교
- 장고
- Tistory
- 이미지 비교
- 면접정답
- django
- gitlab
- pycrypto
- PuTTYGen
- 장고 카톡 자동응답
- gitignore
- 장고 플러스친구 자동응답
- chatbot
- virtualenv
- 면접답변
- 파이썬 강좌
- GIT
- 엑셀 비교
- 파이썬 입문
- 모바일 스킨 적용
- 모바일 테마 적용
- 파이썬 독학
- wsgi
- 파이썬
- admin.py
- 플러스친구 자동응답
- 파이썬 프로그래밍
- django chatbot
- Python
- 문과 코딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함