본문 바로가기

python

Share counter in processes

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
import time
from multiprocessing import Process, Value, Lock
 
class Counter(object):
    def __init__(self, initval=0):
        self.val = Value('i', initval)
        self.lock = Lock()
 
    def increment(self):
        with self.lock:
            self.val.value += 1
 
    def value(self):
        with self.lock:
            return self.val.value
 
def func(counter):
    for i in range(50):
        time.sleep(0.01)
        counter.increment()
 
if __name__ == '__main__':
    counter = Counter(0)
    procs = [Process(target=func, args=(counter,)) for i in range(10)]
 
    for p in procs: p.start()
    for p in procs: p.join()
 
    print counter.value()
cs

'python' 카테고리의 다른 글

Tesseract - OCR 연습  (0) 2018.03.23
깨진 한글 인코딩 찾기  (0) 2018.03.07
Mutiprocess Downloader  (0) 2018.03.05
Multiprocessing  (0) 2018.03.04
파일 이름 가져오기  (0) 2018.03.02