python多线程

# -- coding:utf-8 --
import threading
import time, random

class Counter:
    def __init__(self):
        self.lock = threading.Lock()
        self.value = 0

    def increment(self):
        self.lock.acquire() # critical section
        self.value = value = self.value + 1
        self.lock.release()
        return value

counter = Counter()

class Worker(threading.Thread):

    def run(self):
        for i in range(10):
            # pretend we're doing something that takes 10�00 ms
            value = counter.increment() # increment global counter
            time.sleep(random.randint(10, 100) / 1000.0)
            print self.getName(), "-- task", i, "finished", value

#
#
for i in range(10):
    Worker().start() # start a worker
 

结果:

Thread-8 -- task 0 finished 8
Thread-4 -- task 0 finished 4
Thread-7 -- task 0 finished 7
Thread-2 -- task 0 finished 2
Thread-9 -- task 0 finished 9
Thread-8 -- task 1 finished 11
Thread-10 -- task 0 finished 10
Thread-9 -- task 1 finished 15
Thread-7 -- task 1 finished 13
Thread-1 -- task 0 finished 1
Thread-6 -- task 0 finished 6
Thread-3 -- task 0 finished 3
Thread-5 -- task 0 finished 5
Thread-5 -- task 1 finished 23
Thread-9 -- task 2 finished 18
Thread-4 -- task 1 finished 12
Thread-2 -- task 1 finished 14
Thread-7 -- task 2 finished 19
Thread-6 -- task 1 finished 21
Thread-5 -- task 2 finished 24
Thread-8 -- task 2 finished 16
Thread-2 -- task 2 finished 27
Thread-1 -- task 1 finished 20
Thread-4 -- task 2 finished 26
Thread-10 -- task 1 finished 17
Thread-1 -- task 2 finished 33
Thread-3 -- task 1 finished 22
Thread-9 -- task 3 finished 25
Thread-7 -- task 3 finished 28
Thread-6 -- task 2 finished 29
Thread-8 -- task 3 finished 31
Thread-1 -- task 3 finished 36
Thread-5 -- task 3 finished 30
Thread-2 -- task 3 finished 32
Thread-6 -- task 3 finished 40
Thread-4 -- task 3 finished 34
Thread-1 -- task 4 finished 42
Thread-9 -- task 4 finished 38
Thread-10 -- task 2 finished 35
Thread-7 -- task 4 finished 39
Thread-3 -- task 2 finished 37
Thread-5 -- task 4 finished 43
Thread-1 -- task 5 finished 47
Thread-3 -- task 3 finished 51
Thread-9 -- task 5 finished 48
Thread-8 -- task 4 finished 41
Thread-5 -- task 5 finished 52
Thread-6 -- task 4 finished 45
Thread-2 -- task 4 finished 44
Thread-4 -- task 4 finished 46
Thread-3 -- task 4 finished 54
Thread-7 -- task 5 finished 50
Thread-10 -- task 3 finished 49
Thread-8 -- task 5 finished 56
Thread-7 -- task 6 finished 62
Thread-9 -- task 6 finished 55
Thread-5 -- task 6 finished 57
Thread-3 -- task 5 finished 61
Thread-1 -- task 6 finished 53
Thread-9 -- task 7 finished 66
Thread-7 -- task 7 finished 65
Thread-4 -- task 5 finished 60
Thread-8 -- task 6 finished 64
Thread-2 -- task 5 finished 59
Thread-6 -- task 5 finished 58
Thread-10 -- task 4 finished 63
Thread-1 -- task 7 finished 69
Thread-2 -- task 6 finished 74
Thread-5 -- task 7 finished 67
Thread-3 -- task 6 finished 68
Thread-6 -- task 6 finished 75
Thread-5 -- task 8 finished 79
Thread-10 -- task 5 finished 76
Thread-1 -- task 8 finished 77
Thread-7 -- task 8 finished 71
Thread-4 -- task 6 finished 72
Thread-9 -- task 8 finished 70
Thread-1 -- task 9 finished 84
Thread-8 -- task 7 finished 73
Thread-9 -- task 9 finished 87
Thread-6 -- task 7 finished 81
Thread-3 -- task 7 finished 80
Thread-2 -- task 7 finished 78
Thread-3 -- task 8 finished 90
Thread-10 -- task 6 finished 83
Thread-5 -- task 9 finished 82
Thread-4 -- task 7 finished 86
Thread-7 -- task 9 finished 85
Thread-8 -- task 8 finished 88
Thread-6 -- task 8 finished 89
Thread-2 -- task 8 finished 91
Thread-3 -- task 9 finished 92
Thread-6 -- task 9 finished 96
Thread-10 -- task 7 finished 93
Thread-8 -- task 9 finished 95
Thread-2 -- task 9 finished 97
Thread-4 -- task 8 finished 94
Thread-10 -- task 8 finished 98
Thread-10 -- task 9 finished 100
Thread-4 -- task 9 finished 99
 

你可能感兴趣的:(python)