多線程概念和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()