python 的多线程

Python的多线程并非真正并行,由GIL全局解释器锁限制,导致在多核CPU中仅单核运行。GIL的存在是为了线程安全,但引发效率问题。在CPU密集型任务中,多线程可能更慢。解决方案包括使用multiprocessing、修改GIL机制或尝试其他Python解析器。
摘要由CSDN通过智能技术生成

一. python的线程

多线程:多线程可以共享本进程中的数据,但是不稳定,如果服务器用多线程来处理可能会因为其中一个线程崩了,而服务器就挂了,相反,多进程一般一个子进程错误,不会导致所有子进程都错误,但是主进程挂了,其他照样都挂。

对于python的多线程实现,其实只是一个线程在跑,不断地进行切换,不是真正的多线程,即使遇到多核cpu,多核cpu只有一个核区发挥其作用,因此,python的多线程用于io密集型的操作中,而在cpu密集型的程序,反而变得更慢。

起因为GIL:

GILIn CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)

之所以有GIL这个大坑主要是因为线程安全,python在多线程中为了使其能够实现线程安全,提高其性能,即在多线程下,不会对全局变量或者静态变量进行污染。通过这样的一个锁,使拥有GIL的线程才能运行ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值