
python 并发 异常处理 多线程 多进程 协程
多线程
在多线程环境中,每个线程都有自己的执行流和栈。异常发生时,通常只会影响该特定线程。为了处理线程中的异常,可以使用 threading.Thread() 的 join() 方法或 Thread.exc_info 属性。
import threading
def worker_thread(name):
print(f"{name}: Starting")
raise RuntimeError("Error in thread")
try:
threads = []
for i in range(5):
thread = threading.Thread(target=worker_thread, args=(f"Thread {i}",))
threads.append(thread)
for thread in threads:
thread.start()
thread.join()
except RuntimeError as exc:
print(f"Main thread: Exception occurred in child thread: {exc}")多进程
立即学习“Python免费学习笔记(深入)”;
在多进程环境中,每个进程都有自己独立的内存空间和执行流。异常发生时,它会影响整个进程。要处理进程中的异常,可以使用 multiprocessing.Process() 的 join() 方法或 Process.exitcode 属性。
import multiprocessing
def worker_process(name):
print(f"{name}: Starting")
raise RuntimeError("Error in process")
try:
processes = []
for i in range(5):
process = multiprocessing.Process(target=worker_process, args=(f"Process {i}",))
processes.append(process)
for process in processes:
process.start()
process.join()
except RuntimeError as exc:
print(f"Main process: Exception occurred in child process: {exc}")协程
协程是轻量级线程,在单线程环境中执行。异常发生时,它会传播到协程的调用者。要处理协程中的异常,可以使用 asyncio.Task.exception() 方法。
import asyncio
async def worker_coroutine(name):
print(f"{name}: Starting")
raise RuntimeError("Error in coroutine")
async def main():
tasks = []
for i in range(5):
task = asyncio.create_task(worker_coroutine(f"Coroutine {i}"))
tasks.append(task)
for task in tasks:
try:
await task
except RuntimeError as exc:
print(f"Main coroutine: Exception occurred in child coroutine: {exc}")
asyncio.run(main())最佳实践
结论
在 Python 并发中,异常处理至关重要,因为它可以确保应用程序在异常情况下保持稳定和可靠。通过掌握多线程、多进程和协程中的异常处理技术,开发人员可以构建健壮且可靠的并发应用程序。始终记住捕获和处理异常,并遵循最佳实践,以提高应用程序的整体质量和用户体验。
以上就是Python 并发编程中的异常处理:确保应用程序的稳定性的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号