多线程

1.概念

进程对比线程

并发对比并行

多进程多线程是并发还是并行取决于硬件资源

2.并发问题

并发问题:因为多线程引发的问题

线程安全:一个方法或者实例在多线程环境下稳定运行

并发问题如下:

1.结果不对

一个线程改了另外一个线程用的值

2.core

同时修改一个容器

3.死锁

3.使用

1 原子变量

atomic

线程安全的变量

2 锁

1 mutex

互斥锁

lock

当前线程lock 只有两种结果 1 true的话 阻塞别的线程(别的线程也用这个锁) 2 false 被别的线程阻塞了

unlock

2 unique_lock

构造函数lock

析构函数unlock

3 condition_variable

线程之间的交互通信

wait

wait_for

notify_one

notify_all

4 多线程

1.创建线程池

2.申请线程执行

3.主线程等待子线程执行完

可以在子线程里面创造线程,此时子线程对于新创建的线程就是相对主线程

ide debug可以选线程,gdb也可以

注意线程的生命周期,线程之间的关系

catboost(categorical boosting)

1.原理

https://zhuanlan.zhihu.com/p/540956200

https://arxiv.org/pdf/1706.09516.pdf

https://zhuanlan.zhihu.com/p/108110195

1.Categorical feature

2.Ordered boosting

预测

多棵树组合

xgboost,lightgbm,catboost对比

1.类别特征处理

xgboost:不能直接处理

lightgbm:内置,会有target leakage问题

catboost:内置, 没有target leakage问题

2.训练速度

lightgbm>catboost>xgboost

3.过拟合处理

xgboost,lightgbm:调参解决

catboost:利用Ordered boosting防止过拟合

2.使用

查看节点分裂

model.get_borders()

特征重要性

get_feature_importance

特征选择

select_features

树可视化

plot_tree

调参

分布式训练

catboost-spark

3.问题


:D 一言句子获取中...