Loading

python线程

主线程与子线程

image

常见方法

t.start()

image

t.join()

示例1

image

示例2

image

示例3

可能会导致数据错误

image

t.setDaemon(布尔值)

image

线程名称的设置和获取

image

自定义线程

image

线程安全

一个进程中可以有多个线程,且线程共享所有进程中的资源。
多个线程同时去操作一个"东西”,可能会存在数据混乱的情况,例如:

示例一

image

image

示例二

image

image

如下情况不用加锁

image

线程锁

在程序中如果想要自己手动加锁,一般有两种:Lock和RLock。

同步锁

image

递归锁

image

两者区别

image

image

死锁

死锁,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。

死锁示例一

image

死锁示例二

image

线程池

Python3中官方才正式提供线程池。

线程不是开的越多越好,开的多了可能会导致系统的性能更低了,例如:如下的代码是不推荐在项目开发中编写。

线程池示例

image

image

shutdown()

image

add_done_callback()

image

最终统一获取结果

image

案例-利用线程池下载图片

版本一

image

版本二

image

image

posted @ 2024-12-02 12:51  一只大学生  阅读(28)  评论(0)    收藏  举报