在学习asyncio之前,我们先来理清楚同步/异步的概念:
同步是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行。。。
异步是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34import asyncio,aiohttp
import random
k = 1
async def set_account(url,form,semaphore):
global k
try:
async with semaphore:
async with aiohttp.ClientSession() as session:
async with session.get(url,params=form) as resp:
if '注册成功' in await resp.text():
print(k)
k=k+1
except Exception as e:
print(e)
url = 'http://58.218.213.224:8889/zhuce.php'
tasks = []
semaphore = asyncio.Semaphore(100)
for i in range(100000):
dom = random.randint(100000,99999999)
username = 'qq' + str(dom)
data = {
'username':username,
'password':username,
'repassword':username,
'submit':'注册'
}
tasks.append(set_account(url,data,semaphore))
event_loop = asyncio.get_event_loop()
results = event_loop.run_until_complete(asyncio.gather(*tasks))
event_loop.close()