线程(thread [θred] )是操作系统能够进行运算调度的最小单位。他包含在进程中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
thread模块已被废弃,可以使用threading模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 "_thread"。
_thread.start_new_thread ( function, args[, kwargs] )
参数说明:
threading 模块提供的方法:
如果俩个线程对共同的数据进行修改就需要使用到线程同步。
这里要使用到锁的概念。锁,简单来讲就是将同用数据锁定,关小黑屋。
使用acquire [əˈkwaɪər](关锁),release[rɪˈliːs](开锁)
#!/usr/bin/python3 import threading import time class myThread (threading.Thread): #继承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, 3) #调用操作函数 # 释放锁,开启下一个线程 threadLock.release() def print_time(threadName, delay, counter): #定义操作函数 while counter: time.sleep(delay) 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", 2) # 开启新线程 thread1.start() thread2.start() # 添加线程到线程列表 threads.append(thread1) threads.append(thread2) # 等待所有线程完成 for t in threads: t.join() print ("退出主线程")