标签:获取 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