Python 多线程,线程同步

Posted 神迹丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 多线程,线程同步相关的知识,希望对你有一定的参考价值。

import threading
import time


exitFlag =0

class myThread(threading.Thread):
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.threadID= threadID               #线程ID
        self.name = name                      #线程名称
        self.counter =counter                 #工作次数
    def run(self):
        print("开始线程" + self.name)
        #获取线程锁,用于线程同步,在程序结束前,其他线程函数不会执行
        threadLock.acquire()
        print_time(self.name, self.counter, 5)
        print("退出线程" + self.name)
        #释放线程锁,开启下一个线程工作
        threadLock.release()


#线程工作内容
def print_time(threadName, wait_sec, counter):    #传入线程名称,延迟时间,工作次数
    while counter:
        if exitFlag:
            threadName.exit()
        time.sleep(wait_sec)                 #延迟时间
        print("%s: %s" % (threadName, time.ctime(time.time())))
        counter -=1



#创建线程锁,用于线程同步
threadLock =threading.Lock()
#创建线程列表,将线程放入线程列表中顺序执行
threads =[]

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

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

#将线程加入线程列表
threads.append(thread1)
threads.append(thread2)

#循环遍历线程函数,线程按顺序进行工作
for t in threads:
    t.join()

print("退出主线程.......")

 

以上是关于Python 多线程,线程同步的主要内容,如果未能解决你的问题,请参考以下文章

Python多线程同步

python多线程编程—同步原语入门(锁Lock信号量(Bounded)Semaphore)

起底多线程同步锁(iOS)

线程同步-使用ReaderWriterLockSlim类

python小白学习记录 多线程爬取ts片段

python多线程