python 多线程中同步的小样例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 在一个资源池中。获取资源
# Author: zhang
# Date: 2015-7-27

import time
import os
import threading

# 其它的一些可加入操作,这里为休眠
def doSomething():
    time.sleep(1)

# 获取资源
def getResource(threadid):
    global i
    global lock
    
    while True:
        lock.acquire() #  上锁
        if i != 0:
            i = i-1
            print('the current thread id is ',threadid)
            print('the current left resource is ',i)
        else:
            print('the left resource is none')
            os._exit(0)

        lock.release()
        doSomething()

i =  20 # 资源数量
lock = threading.Lock()

# 创建多个线程
for k in range(10):
    child_thread = threading.Thread(target=getResource,args=(k,))
    child_thread.start()




样例中有一个共同的资源池,利用多线程获取当中的资源。但要保证数据的同步,即在某一次获取过程中,仅有一个线程能够对资源池进行操作。





原文地址:https://www.cnblogs.com/mthoutai/p/6862408.html