threading库
允许创建和管理线程,从而可以同时执行多个函数。
以下是一个简单的多线程示例:
import threading
def print_numbers():
for i in range(1, 6):
print(f"Number {i}")
def print_letters():
for letter in 'abcde':
print(f"Letter {letter}")
# 创建两个线程
t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_letters)
# 启动线程
t1.start()
t2.start()
# 等待线程完成
t1.join()
t2.join()
print("任务完成")
在这个示例中,创建了两个线程,分别用于打印数字和字母,然后同时执行。
asyncio库
是Python的异步编程库,在单个线程中同时执行多个异步任务。
以下是一个使用asyncio
的示例,用于同时下载多个网页:
import asyncio
import aiohttp
async def fetch_url(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def main():
urls = ['http://example.com', 'http://example.org', 'http://example.net']
tasks = [fetch_url(url) for url in urls]
responses = await asyncio.gather(*tasks)
for url, content in zip(urls, responses):
print(f"Downloaded from {url}, content length: {len(content)}")
if __name__ == '__main__':
asyncio.run(main())
这个示例中,使用asyncio库
同时下载多个网页内容,而不需要为每个任务创建新的线程。