Thread基础
继承线程类:
import threading import time class CodingThread(threading.Thread): def run(self): # 继承线程,重写run方法 for x in range(3): print('aaaaaa %s'%threading.current_thread()) # threading.current_thread() 查看当前线程信息 time.sleep(1) class DrawingThread(threading.Thread): def run(self): for x in range(3): print('bbbbbbbb %s'%threading.current_thread()) def main(): t1 = CodingThread() t2 = DrawingThread() t1.start() t2.start() if __name__=='__main__': main()
两个线程的VALUE同时进行+1的操作,当数量多大时,结果会出现误差,加锁可以防止误差。
# 多线程都是在同一个进程中运行的。因此在进程中的全局变量所有线程都是可共享的。线程执行的顺序是无序的,可能造成数据错误。 import threading VALUE = 0 gLock = threading.Lock() def add_value(): global VALUE gLock.acquire() # 加锁 (只需要对被修改的全局变量加锁,访问全局变量不需要加锁) for x in range(1000000): VALUE += 1 gLock.release() # 释放 print(VALUE) def main(): for x in range(2): t = threading.Thread(target=add_value) t.start() if __name__=='__main__': main()