多线程,多进程

Posted 测试的自我放逐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程,多进程相关的知识,希望对你有一定的参考价值。

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 只需写一个函数名即可。

    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)

以上是关于多线程,多进程的主要内容,如果未能解决你的问题,请参考以下文章

什么是多线程,多进程?

多线程与多进程的比较

多进程和多线程有啥区别?

NodeJs多线程、多进程、定时任务

python中多进程和多线程的区别

python 多进程和多线程配合