码迷,mamicode.com
首页 > 编程语言 > 详细

多线程,多进程(1)

时间:2018-05-29 01:37:42      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:集合   直接   name   star   target   传参   哈哈哈   函数   简介   

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)

多线程,多进程(1)

标签:集合   直接   name   star   target   传参   哈哈哈   函数   简介   

原文地址:https://www.cnblogs.com/cslw5566/p/9102879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!