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)
页: 1 2 3 [4]
查看完整版本: 类学习