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

线程和进程

时间:2019-08-09 19:53:09      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:获取   col   检测   进程和线程   定长参数   频繁   port   download   war   

1.生成器补充

技术图片

2.装饰器补充

(1)*args位置传参(返回元组)

例:

def haha(*args)
    print(args)
haha()#括号里可以随意放

(2)**kwargs可带参数名的传参(返回字典)

例:

def lala(**kwargs):
    print(kwargs)
lala(a=1,b=2)

注:*args要放在**kwargs之前

(3)*args与**kwargs

def heihei(*args,**kwargs):
    print(args)
    print(kwargs)
heihei(1,2,3,a=1,b=1,c=1)

3. 不定长参数与装饰器结合使用(重要的参数要用带参数名的来进行传参,从而让**kwargs捕获):

例1

技术图片

例2

#写三个页面,A,B,C去检测IP是否频繁访问,如果是则不予访问,返回404
import time
def count(func):
   
    def warp(*args,**kwargs):
        num = kwargs[num]
        time.sleep(1)
        if num > 4:
           
            print(404)

        else:

            return func(*args,**kwargs)
            
    return warp

    
@count
def page(num):
    print("显示页面")
                                                
                        
if __name__ == __main__:
    for i in range(10):
        page(num = i)

4.进程和线程

1.并发与并行

  并发(间隔发生):一个人做多个任务

      并发即线程,是伪进程

  并行(同时发生):多个人做一个任务

      并行即进程,一个进程下可以开多个线程

2.python的多进程

from multiprocessing import Process
from random import randint
from time import time, sleep
import os
import requests

def download_page(start,end):
    for i in range(start,end):
        url = http://op.hanhande.net/shtml/op_wz/list_2602_%d.shtml%i
        response = requests.get(url)
        response.encoding = gbk
        HTML = response.text
        # print(response.status_code)
        print(url)
# def download_task(HTML):
#     print(‘开始下载%s‘ % HTML)
#     time_to_download = randint(5, 10)
#     sleep(time_to_download)
#     print(‘%s 下载完成,经过%d秒‘ % (HTML, time_to_download))

def main():
    start = time()
# 开启两个多进程,     函数名              传递的参数,需要注意的是,它接受的是一个元组(tuple)
    p1 = Process(target=download_page, args=(1,15 ))
    p2 = Process(target=download_page, args=(15,28 ))

# 获取进程号

# 启动进程
    p1.start()
    p2.start()

##############
# 进程阻塞.
    p1.join()
    p2.join()
##############
    end = time()
    print(共用时%.2f秒% (end-start))
   
if __name__ == __main__:
    main()

 

线程和进程

标签:获取   col   检测   进程和线程   定长参数   频繁   port   download   war   

原文地址:https://www.cnblogs.com/cong-ting-ting/p/11328989.html

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