티스토리 뷰
오늘 작업을 하다가 보니,
Python에서 멀티쓰레드로 작업을 처리하고 싶어졌다.
그런데, 단순히 Thread를 Array로 만들어서 처리하다보니 너무 복잡했다.
그래서 Pool 형태로 구현하는 방법을 찾아보니, 아래 링크처럼 구현이 가능했다.
http://code.activestate.com/recipes/577187-python-thread-pool/
class ThreadPool:
"""Pool of threads consuming tasks from a queue"""
def __init__(self, num_threads):
self.tasks = Queue(num_threads)
for _ in range(num_threads): Worker(self.tasks)
def add_task(self, func, *args, **kargs):
"""Add a task to the queue"""
self.tasks.put((func, args, kargs))
def wait_completion(self):
"""Wait for completion of all the tasks in the queue"""
self.tasks.join()
저 코드 자체는 상당히 괜찮았다.
다만, 워낙 빠르게 처리되서, DB 세션이 끊어지는 문제가 발생했다.
이를 해결하기 위해서 DB 쿼리 부분을 Critical Section으로 처리를 하려고 했다.
from threading import Lock
critical_section_lock = Lock()
with critical_section_lock:
// DB Connection 처리
이런 식으로 하면 되지만... 웬지 모르게 아쉽다.
뭔가 더 성능이 대박 잘나올 것 같은데,
DB 쿼리를 한번에 하나만 처리하려고, 다른 모든 쓰레드가 기다려야 한다니...
그래서, 세마포어를 고민해봤다.
from threading import BoundedSemaphore
semaphore_obj = BoundedSemaphore(value=3)
semaphore_obj.acquire()
// DB Connection 처리
semaphore_obj.release()
그래서, 성능을 측정해봤는데...;
웬지 모르게 엇비슷하게 나왔다.
이게 아닌데...
뭔가 잘못 생각한 것 같다.
일단은 일을 해야하기 때문에 여기까지... ㅜㅜ;
'IT > 프로그래밍' 카테고리의 다른 글
[Python] Matplotlib.pyplot 맥에서 오류날 때 (0) | 2018.04.15 |
---|---|
[Python] 리스트에서 두개 쌍의 모든 조합 얻어내기 (list -> all of two pairs) (0) | 2014.01.30 |
git with proxy (0) | 2012.08.13 |
[Python] Encoding 문제 (1) | 2011.11.14 |
[Python] MS 제품 컨트롤 - 관련 사이트 (0) | 2010.11.09 |
- Total
- Today
- Yesterday
- 지루박멸연구센타
- 열정의 힘을 믿는다
- Le4rN TO Cr4cK
- 디버깅에관한모든것(DebugLab)
- sysinternals
- FoundStone
- hashtab
- 보안-coderant
- 디바이스드라이버 개발자 포럼
- dualpage.muz.ro
- osronline.com - 드라이버 관련 정보 사이트
- NtInternals - NativeAPI Refere…
- pcthreat - spyware 정보 제공
- rootkit.com - 루트킷 관련 정보
- www.ntinternals.net
- WINE CrossRef. - source.winehq…
- tuts4you
- hex-rays
- idapalace
- idefense
- immunityinc
- threatexpert
- hdp.null2root.org
- www.crackstore.com
- crackmes.de
- www.who.is
- www.cracklab.ru
- community.reverse-engineering.…
- video.reverse-engineering.net
- SnD
- 클레이 키위
- reversengineering.wordpress.co…
- www.openrce.org
- www.woodmann.com
- PEID.Plusins.BobSoft
- roxik.com/pictaps/
- regexlib.com
- spyware-browser.com
- www.usboffice.kr
- regulator
- www.txt2re.com
- ietab.mozdev.org
- zesrever.xstone.org
- www.heaventools.com/PE-file-he…
- www.heaventools.com
- www.innomp3.com
- 울지않는벌새
- exetools.com-forum
- exetools.com
- utf8 conv
- robtex - IP trace
- onsamehost - same IP sites
- JpopSuki
- jsunpack.jeek.org
- wepawet.iseclab.org
- www.jswiff.com
- www.hackeroo.com
- winesearcher.co.kr
- khpga.org
- malwareurl.com
- anubis.iseclab.org
- www.crummy.com-eautifulSoup
- malwarebytes.org/forums
- bbs.janmeng.com
- blackip.ustc.edu.cn
- eureka.cyber-ta.org
- exploit-db.com
- 군함도
- 사회간접자본
- ubuntu
- ROA
- Pivot
- 미국주식
- 매매가격지수
- CriticalSection
- 전세매매지수
- 자동트래이딩
- systemd
- 피봇
- ChatGPT
- 다올저축은행
- 주택구매력지수
- 실시간트래이딩
- 공공인프라
- 주식트래이딩
- 시스템트래이딩
- INVOICE
- 레고랜드
- SBI저축은행
- O365
- 신한저축은행
- hai
- 주식
- PIR
- 맥쿼리인프라
- logrotate
- ElasticSearch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |