测试的自我放逐

迷茫中探索

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.多线程、多进程的简介:

        1)线程是程序里面最小的执行单元。

        2)进程是资源的集合。

            线程是包含在一个进程里面的, 一个进程可以有多个线程。

            一个进程里面默认有一个线程,这个是主线程。

2.多线程

import threading,time     #导入线程模块

def run():

         time.sleep(3) #干活需要3s

         print('哈哈哈')

for i in range(5): #串行  5个依次执行15s

    run()

for i in range(5):  #并发

     t = threading.Thread(target=run) #实例化了一个线程  target 只需写一个函数名即可。这里启动另外5个子线程

    t.start()   #这里启动了5个线程,这里理论应该执行3s

#多线程, 就是N个线程一起在干活

 

 

 

 

#1、串行

# start_time = time.time()

# for k,v in urls.items():

#      down_html(k,v)    #传入两个参数

# end_time = time.time()

# run_time = end_time - start_time

# print('下载总共花了xxx时间',run_time)

 

 

#2、并行 (爬虫举例)

urls = {

         'besttest':'http://www.besttest.cn',

         'niuniu':'http://www.nnzhp.cn',

         'dsx':'http://www.imdsx.cn',

         'cc':'http://www.cc-na.cn'

}

import requests,time

data= {}

def down_html(file_name,url):    #下载网站内容

         start_time = time.time()

         res = requests.get(url).content   #返回的2进制的内容

         open(file_name+'.html','wb').write(res)    #2进制的直接写入 

         end_time = time.time()

         run_time = end_time-start_time

         data[url] = run_time

threads = []

start_time = time.time()

for k,v in  urls.items():   #5次

         t = threading.Thread(target=down_html,args=(k,v)) #多线程的函数如果传参的话,必须得用args

         t.start()

         threads.append(t)  #

#6个线程

#进程里面默认有一个线程,这个线程叫做主线程   直接打印时间就是主线程执行代码的时间

for t in threads:

         t.join()     ##循环等待

 

print(data)

end_time = time.time()

run_time = end_time - start_time

print('下载总共花了xxx时间',run_time)

posted on 2018-05-28 23:22  软测小白6v  阅读(134)  评论(0)    收藏  举报