python之多线程

学习了一下多线程 用到爬虫里面简直爽歪歪呀~

---------------目录-----------------

1 多线程定义

2 添加线程

3 一些可能会用到的地方

4 锁

 

1 多线程定义

定义就很简单,为了实现高并发,能够同时在一个脚本下运行多个程序,节约时间~

2 添加线程

添加线程用到的代码:

import threading as td

def sum(num1,num2):
    sum = num1+num2
    print('sss',sum)

def divided(num1,num2):
    re = []
    result = num1 - num2
    re.append(result**3)
    print('fff',re)

if __name__ == '__main__':
    td1 = td.Thread(target=sum, args=(3, 4))
    td2 = td.Thread(target=divided, args=(3, 4))
    td1.start()
    td2.start()

这样就可以同时运行sum和divided啦~

3 一些可能会用到的地方

另外threading中还有一些其他的功能,在使用多线程的时候可以查看状态:

print(td.active_count())#现在运行的线程数量
print(td.enumerate())#返回目前正在运行的线程list
print(td.current_thread())#返回当前线程变量

使用join()方法可以让线程结束后再运行join语句后面的程序语句。

td.join()

还可以使用queue来保存线程中的值,来代替线程中的返回值。

from queue import Queue

4 锁

lock的意思是锁住某个线程,等它执行完了再做下一个线程。

import threading as td

def sum(num1,num2):
    global lock
    lock.acquire()
    sum = num1+num2
    print('sss',sum)
    lock.release()

def divided(num1,num2):
    lock.acquire()
    re = []
    result = num1 - num2
    re.append(result**3)
    print('fff',re)
    lock.release()

if __name__ == '__main__':
    lock = td.Lock()
    td1 = td.Thread(target=sum, args=(3, 4))
    td2 = td.Thread(target=divided, args=(3, 4))
    td1.start()
    td2.start()

我只是简单的使用一下多线程提升一下爬虫爬取信息的速度~

 

 

 

你可能感兴趣的:(python编程学习心得,项目实践心得)