多线程概念和threading模块介绍
没有多线程
import threading
def coding():
for x in range(3):
print('正在写代码%s'%x)
time.sleep(1)
def drawing():
for x in range(3):
print('正在画图%s'%x)
time.sleep(1)
def main():
coding()
drawing()
if __name__=='__main__':
main()
多线程
import threading
def coding():
for x in range(3):
print('正在写代码%s'%x)
time.sleep(1)
def drawing():
for x in range(3)
print('正在画图%s'%x)
time.sleep(1)
def main():
t1 = threading.Thread(target = coding)
t2 = threading.Thread(target = drawing)
t1.start()
t2.start()
if __name__=='__main__':
main()
使用Thread类创建多线程
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 26 16:37:44 2019
@author: admin
"""
import threading
import time
class CodingThread(threading.Thread):
def run(self):
for x in range(3):
print('正在写代码%s'%threading.current_thread())
time.sleep(1)
class DrawingThread(threading.Thread):
def run(self):
for x in range(3):
print('正在画图%s'%threading.current_thread())
time.sleep(1)
def main():
t1 = CodingThread()
t2 = DrawingThread()
t1.start()
t2.start()
if __name__=='__main__':
main()
多线程共享全局变量以及锁机制
锁用在改变全局变量的地方,访问全局变量时不需要加锁
import threading
VALUE = 0
gLock = threading.Lock()
def add_value():
# 函数内部改变全局变量值时要加下面这行
global VALUE
gLock.acquire()
for x in range(100000):
VALUE +=1
gLock.release()
print('value:%d'%VALUE)
def main():
for x in range(2):
t=threading.Thread(target=add_value)
t.start()
if __name__=='__main__':
main()