Python线程同步

1、Python线程同步

如果多个线程共同对某个数据修改,则可能出现不可预料的结果,为了保证数据的正确性,需要对多个线程进行同步。

使用Thread对象的Lock和Rlock可以实现简单的线程同步,这两个对象都有acquire方法和release方法,对于那些需要每次只允许一个线程操作的数据,可以将其操作放到acquire和release方法之间。

2、实例

# -*- coding: UTF-8 -*-

import threading
import time

class myThread(threading.Thread): # 继承父类threading.Thread
    def __init__(self, name, delay, counter):
        threading.Thread.__init__(self)
        self.name = name
        self.delay = delay
        self.counter = counter

    def run(self): # 把要执行的代码写到run函数里面,线程在创建后会直接运行run函数
        print "Starting " + self.name
        threadLock.acquire()
        print_time(self.name, self.delay, self.counter)
        threadLock.release()
        print "Exiting " + self.name

def print_time(name, delay, counter):
    while counter:
        time.sleep(delay)
        print "%s: %s" % (name, time.ctime(time.time()))
        counter -= 1

threadLock = threading.Lock()
threads = []

# 创建新线程
thread1 = myThread("Thread-1", 1, 5)
thread2 = myThread("Thread-2", 2, 5)

# 开启线程
thread1.start()
thread2.start()

# 添加线程到线程列表
threads.append(thread1)
threads.append(thread2)

# 等待所有线程完成
for t in threads:
    t.join()

运行结果:

Starting Thread-1
Starting Thread-2
Thread-1: Thu Jul 27 15:26:32 2017
Thread-1: Thu Jul 27 15:26:33 2017
Thread-1: Thu Jul 27 15:26:34 2017
Thread-1: Thu Jul 27 15:26:35 2017
Thread-1: Thu Jul 27 15:26:36 2017
Exiting Thread-1
Thread-2: Thu Jul 27 15:26:38 2017
Thread-2: Thu Jul 27 15:26:40 2017
Thread-2: Thu Jul 27 15:26:42 2017
Thread-2: Thu Jul 27 15:26:44 2017
Thread-2: Thu Jul 27 15:26:46 2017
Exiting Thread-2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值