python学习笔记8---爬虫进阶

多线程概念和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()
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章