鱼C论坛

 找回密码
 立即注册
楼主: wideband

类学习

[复制链接]
 楼主| 发表于 2023-7-5 07:30:10 | 显示全部楼层
它返回两个集合:已完成的任务集合done和未完成的任务集合pending。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-5 08:31:26 | 显示全部楼层
asyncio.create_task(f1()),
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-5 14:05:52 | 显示全部楼层
注:asyncio创建task时,要写在main()函数内;

task1 = asyncio.create_task(f1())
task2= asyncio.create_task(f1())

或者:
coroutines=[f(),f2()]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-5 19:23:47 | 显示全部楼层
  1. import asyncio

  2. async def others():
  3.     print("开始")
  4.     await asyncio.sleep(2)
  5.     print('end')
  6.     return '返回值'

  7. async def func():
  8.     print("执行协程函数内部代码")
  9.     # 遇到IO操作挂起当前协程(任务),等IO操作完成之后再继续往下执行。当前协程挂起时,事件循环可以去执行其他协程(任务)。
  10.     response1 = await others()
  11.     print("IO请求结束,结果为:",response1)

  12.     response2 = await others()
  13.     print("IO请求结束,结果为:",response2)

  14. asyncio.run(func())
复制代码


为什么在当前的代码示例中,response1 = await others() 和 response2 = await others() 是按顺序执行的,而不会在等待过程中切换呢?

在同一个协程内部,代码会按顺序执行,而不会在等待过程中切换到其他协程上。
当执行 response1 = await others() 时,会等待异步操作完成。只有在该异步操作完成后,才会执行下一行代码 response2 = await others()。
如果要实现异步并发执行,需要使用多个协程并适当处理它们的调度和等待机制。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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, 简化,相当于
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-7 17:54:00 | 显示全部楼层
异步迭代器: __aiter__()和__anext__()方法来实现,异步迭代器允许在每次迭代时发起异步操作,并在操作完成后获取或产生相应的值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-12 15:54:59 | 显示全部楼层
select distinct ID from students; # 去重复
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-12 16:00:31 | 显示全部楼层
SELECT * FROM employees WHERE last_name LIKE 'Sm%';

这个查询将返回姓以"Sm"开头的所有员工,如"Smith"、"Smythe"等。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-12 16:16:42 | 显示全部楼层
SELECT * FROM customers WHERE country IN ('USA', 'Canada', 'Mexico');
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-12 17:09:17 | 显示全部楼层
假设有一个名为"employees"的员工表,包含以下数据:

id        name        department
1        John                Sales
2        Jane                IT
3        Michael        HR
4        Emma        Sales

  1. SELECT GROUP_CONCAT(DISTINCT department SEPARATOR ', ') AS departments FROM employees;
复制代码


departments
--------------------
Sales, IT, HR
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-24 10:19:53 | 显示全部楼层
写一个登陆装饰器,对一函数def run() 函数进行装饰,要求输入账户和密码,都正确则运行函数run(),否则提示错误,要求重新输入;但是连续3次错误,则提示:密码错误,不能继续,程序退出;

  1. def login_required(func):
  2.     max_attempts = 3  # 最大尝试次数
  3.     attempts = 0  # 已尝试次数

  4.     def wrapper():
  5.         nonlocal attempts

  6.         # 验证函数
  7.         def check_credentials(username, password):
  8.             # 此处为示例,你可以根据实际情况修改
  9.             valid_username = "admin"
  10.             valid_password = "password"

  11.             if username == valid_username and password == valid_password:
  12.                 return True
  13.             else:
  14.                 return False

  15.         while attempts < max_attempts:
  16.             username = input("请输入账户名:")
  17.             password = input("请输入密码:")
  18.             if check_credentials(username, password):
  19.                 return func()  # 运行被装饰的函数
  20.             else:
  21.                 print("账户或密码错误,请重新输入。")
  22.                 attempts += 1

  23.         print("密码错误次数超过限制,程序退出。")

  24.     return wrapper




  25. @login_required
  26. def run():
  27.     print("开始执行函数")


  28. # 测试
  29. run()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-27 10:24:42 | 显示全部楼层
wideband 发表于 2023-4-18 09:53
可迭代对象:可以用 for 循环遍历的对象,iter

from collections import Iterable

from typing import Iterable,Iterator
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-28 09:36:50 | 显示全部楼层
冒泡排序:

  1. nums = [30,12,56,9,8,68,2]

  2. def bubble(nums):
  3.     for j in range(0,len(nums)-1): #3个数排序,先求最大值要排序2次,然和,求次大值只需要排1次序了。

  4.         for i in range(0,len(nums)-1-j):
  5.             if nums[i] > nums[i+1]:
  6.                 nums[i],nums[i + 1] = nums[i+1],nums[i]

  7. bubble(nums)

  8. print(nums)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 19:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表