wideband
发表于 2023-7-5 07:30:10
它返回两个集合:已完成的任务集合done和未完成的任务集合pending。
wideband
发表于 2023-7-5 08:31:26
asyncio.create_task(f1()),
wideband
发表于 2023-7-5 14:05:52
注:asyncio创建task时,要写在main()函数内;
task1 = asyncio.create_task(f1())
task2= asyncio.create_task(f1())
或者:
coroutines=
wideband
发表于 2023-7-5 15:30:17
import asyncio
async def func():
print("测试")
result = func()
# 1oop = asyncio.get_event_1oop( I
# loop.run_unti1_complete( result )
asyncio.run( result ) # python3.7
wideband
发表于 2023-7-5 19:23:47
import asyncio
async def others():
print("开始")
await asyncio.sleep(2)
print('end')
return '返回值'
async def func():
print("执行协程函数内部代码")
# 遇到IO操作挂起当前协程(任务),等IO操作完成之后再继续往下执行。当前协程挂起时,事件循环可以去执行其他协程(任务)。
response1 = await others()
print("IO请求结束,结果为:",response1)
response2 = await others()
print("IO请求结束,结果为:",response2)
asyncio.run(func())
为什么在当前的代码示例中,response1 = await others() 和 response2 = await others() 是按顺序执行的,而不会在等待过程中切换呢?
在同一个协程内部,代码会按顺序执行,而不会在等待过程中切换到其他协程上。
当执行 response1 = await others() 时,会等待异步操作完成。只有在该异步操作完成后,才会执行下一行代码 response2 = await others()。
如果要实现异步并发执行,需要使用多个协程并适当处理它们的调度和等待机制。
wideband
发表于 2023-7-7 08:26:31
1:协程对象一次只能提交一个任务,task对象才能批量提交:除非通过gather将多个协程对象封装成任务对象。
2:await 只在 async 函数中使用。可暂停当前协程的执行,直到对象返回结果。 await :Coroutine 对象、task对象、Future 对象。await asyncio.sleep(2)
asyncio.wait(任务列表) :转换程 协程对象;
# loop = asyncio.get_event_1oop()
# loop.run_unti1_complete( result )
asyncio.run( result ) # python3.7, 简化,相当于
wideband
发表于 2023-7-7 17:54:00
异步迭代器: __aiter__()和__anext__()方法来实现,异步迭代器允许在每次迭代时发起异步操作,并在操作完成后获取或产生相应的值。
wideband
发表于 2023-7-12 15:54:59
select distinct ID from students; # 去重复
wideband
发表于 2023-7-12 16:00:31
SELECT * FROM employees WHERE last_name LIKE 'Sm%';
这个查询将返回姓以"Sm"开头的所有员工,如"Smith"、"Smythe"等。
wideband
发表于 2023-7-12 16:16:42
SELECT * FROM customers WHERE country IN ('USA', 'Canada', 'Mexico');
wideband
发表于 2023-7-12 16:56:00
为了快速统计数据,常用5个聚合函数:
select count(*) from student;
select max(ID) from student;
select sum(age) from student;
select ave(age) from student;
wideband
发表于 2023-7-12 17:09:17
假设有一个名为"employees"的员工表,包含以下数据:
id name department
1 John Sales
2 Jane IT
3 Michael HR
4 Emma Sales
SELECT GROUP_CONCAT(DISTINCT department SEPARATOR ', ') AS departments FROM employees;
departments
--------------------
Sales, IT, HR
wideband
发表于 2023-7-24 10:19:53
写一个登陆装饰器,对一函数def run() 函数进行装饰,要求输入账户和密码,都正确则运行函数run(),否则提示错误,要求重新输入;但是连续3次错误,则提示:密码错误,不能继续,程序退出;
def login_required(func):
max_attempts = 3# 最大尝试次数
attempts = 0# 已尝试次数
def wrapper():
nonlocal attempts
# 验证函数
def check_credentials(username, password):
# 此处为示例,你可以根据实际情况修改
valid_username = "admin"
valid_password = "password"
if username == valid_username and password == valid_password:
return True
else:
return False
while attempts < max_attempts:
username = input("请输入账户名:")
password = input("请输入密码:")
if check_credentials(username, password):
return func()# 运行被装饰的函数
else:
print("账户或密码错误,请重新输入。")
attempts += 1
print("密码错误次数超过限制,程序退出。")
return wrapper
@login_required
def run():
print("开始执行函数")
# 测试
run()
wideband
发表于 2023-9-27 10:24:42
wideband 发表于 2023-4-18 09:53
可迭代对象:可以用 for 循环遍历的对象,iter
from collections import Iterable
from typing import Iterable,Iterator
wideband
发表于 2023-9-28 09:36:50
冒泡排序:
nums =
def bubble(nums):
for j in range(0,len(nums)-1): #3个数排序,先求最大值要排序2次,然和,求次大值只需要排1次序了。
for i in range(0,len(nums)-1-j):
if nums > nums:
nums,nums = nums,nums
bubble(nums)
print(nums)