多线程

在学习爬虫之前,把多线程学习了一遍,现在回顾....(=。=  中午没睡觉,头晕ing)

1.由于全局锁的概念,python实质上并不是真正意义上的多线程,只是在几个项目之间不停地做切换,人眼无法识别,

   实际上在任意的指定时间里,有且仅有一个线程在运行。

2. 比如:打开pdf进程,然后同时进行打印、修改文档...即创建了多个线程(Thread)

    即进程创造线程。

3.多任务实现由三种模式:

    3.1.多线程:启动一个进程,在此进程内启动多个线程

    3.2.多进程:启动多个进程,每个进程仅含有一个线程

    3.3.多线程+多进程

    对于3,一般不使用

4.在python模块中,使用threading模块  f = threading.Thread(tagert=aim),来创建一个f 对象的线程

5.下面附上用多线程与不用对于时间上的差别程序:

# test:时间上差
import time
def a():
print('a begin')
time.sleep(2)
print('a end')

def b():
print('b begin')
time.sleep(2)
print('b end')

asdf = time.time()
a()
b()
print(time.time()-asdf) # 为a,b程序运行的时间
=========执行4秒多

import threading
a_0 = threading.Thread(target=a) # 创建线程对象
b_0 = threading.Thread(target=b)
asdf = time.time()
a_0.start() # 啊,我要开始跑了
b_0.start()
a_0.join() # 等它跑完再跑b
b_0.join()
print(time.time()-asdf)
========执行2秒多
看来多线程在节约时间上很厉害
oh~ 对了,记得在创建、start、join的时候用循环哦~ 节约人力哈~
================未完待续==================
接下来更新全局锁啊啥的

posted on 2017-11-28 21:47  java小萌新(づ ̄3 ̄)  阅读(107)  评论(0编辑  收藏  举报

导航