python

Share counter in processes

장곰부대 2018. 3. 5. 20:11
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