異步編程(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