异步编程(asyncio)
1. 协程基础
import asyncio
import time# 定义协程函数
async def say_after(delay, message):await asyncio.sleep(delay)print(message)# 主协程
async def main():print(f"开始时间: {time.strftime('%X')}")# 顺序执行await say_after(2, '你好')await say_after(1, '世界')print(f"结束时间: {time.strftime('%X')}")# 运行协程
asyncio.run(main())
2. 并发任务
async def fetch_data(task_id, delay):print(f"任务 {task_id} 开始获取数据...")await asyncio.sleep(delay)print(f"任务 {task_id} 完成,耗时 {delay} 秒")return f"任务 {task_id} 结果"async def concurrent_tasks():# 创建任务列表tasks = [fetch_data(1, 3),fetch_data(2, 1),fetch_data(3, 2)]# 并发执行并获取结果results = await asyncio.gather(*tasks)print("\n所有任务完成!")for result in results:print(result)asyncio.run(concurrent_tasks())
3. 异步HTTP请求
import aiohttpasync def fetch_url(url):async with aiohttp.ClientSession() as session:print(f"正在请求: {url}")async with session.get(url) as response:content = await response.text()return f"{url} 返回 {len(content)} 个字符"async def main():urls = ["https://www.python.org","https://www.baidu.com","https://www.github.com"]tasks = [fetch_url(url) for url in urls]results = await asyncio.gather(*tasks)for result in results:print(result)asyncio.run(main())
数据科学与可视化
1. NumPy数组操作
import numpy as np# 创建数组
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("原始数组:\n", data)# 数组运算
print("\n数组平方:\n", data**2)
print("\n每列平均值:", np.mean(data, axis=0))# 重塑数组
reshaped = data.reshape(9)
print("\n重塑为一维数组:", reshaped)# 布尔索引
filtered = data[data > 5]
print("\n大于5的元素:", filtered)
2. Pandas数据分析
import pandas as pd# 创建DataFrame
data = {"姓名": ["张三", "李四", "王五", "赵六"],"年龄": [25, 32, 28, 35],"城市": ["北京", "上海", "广州", "深圳"],"薪资": [15000, 22000, 18000, 28000]
}df = pd.DataFrame(data)
print("原始数据:\n", df)# 数据操作
print("\n描述统计:\n", df.describe())
print("\n最高薪资:\n", df[df["薪资"] == df["薪资"].m