Python开发之并发编程
1.前言
当程序需要运行大量计算任务的时候,还是需要异步编程。
(1)多进程
通过 multiprocessing 模块实现,每个进程都有独立的解释器和GIL,适用于CPU密集型任务。
(2)多线程
通过 threading 模块实现,适合处理CPU密集型任务,可以充分利用多核处理器的计算能力。
(2)异步
通过 asyncio 模块实现,基于事件循环和协程,适用于I/O密集型任务,能够提高程序的并发性。
(3)并行计算
通过asyncio模块实现,基于事件循环和协程,适用于I/O密集型任务,能够提高程序的并发性。
【1】.Python 异步编程入门
【2】.深入解析Python并发编程的多线程和异步编程 1.多线程基础概念;2.threading模块基础;3.代码实战:多线程下载图片;4.线程安全与锁机制;5.多线程的适用场景;6.异常处理与多线程;7.多线程的注意事项;8.多线程的性能优化;9.面向对象的多线程设计;10.多线程与资源管理器;11.多线程的调试与性能分析;12.多线程的安全性与风险;
【3】.Python 3并发编程:多线程和异步IO详解
2.多线程
3.异步
【1】.python异步编程之asyncio(百万并发)
no running event loop
在我进行异步操作的时候,结果返回了这个东西。
4.子进程
1 | import subprocess |
【1】.subprocess.Popen执行程序以及关闭进程 用上面的方法来执行python demo.py,它的实际原理是另外开启一个cmd命令来运行python demo.py的命令,即使后面用popen.terminate()也只能关闭cmd的命令,cmd命令被kill掉后,python demo.py的线程由系统来托管,杀死不了python demo.py的进程,从而导致python demo.py不能退出.
【2】.subprocess.run 和 subprocess.Popen 区别 这里有一个 os.killpg(proc.pid, signal.SIGTERM) ,但是我加入了之后,发现 module ‘os’ has no attribute ‘setsid’
【3】.使用Python打开和关闭子进程
【4】.AttributeError: module ‘os’ has no attribute ‘setsid’ 这里有一个 creationflags=subprocess.CREATE_NEW_PROCESS_GROUP,但是我使用之后,还是出现:module ‘os’ has no attribute ‘killpg’
【5】.解决EasyOCR报错:cv2.error: Unknown C++ exception from OpenCV code pip install opencv-python==4.5.1.48
【6】.cv2.error: Unknown C++ exception from OpenCV code pip install opencv-python==4.5.1.48