近期,公司要进行数据仓库的开发,我也有幸参与其中,但是这是第一次用python进行开发这么大的工程,虽然只是开发了其中一小部分,但是进一步加深了对python的理解,颇有收获。
总结
1、python多线程是伪线程
2、apschedule进行定时任务管理:
- 可以设置线程池数量和同一任务的最大实例数量;
- 可以进行修改任务参数,下一次执行时间,删除任务,暂停和恢复任务,注意修改的是下一次运行时间;
- 获取运行实例,运行任务;
- 要注意使用单例模式;
3、线程锁和全局变量共享
4、exec执行字符串表达式
5、python不能强制杀死线程,尽量避免线程阻塞问题,在适当位置加return或break正常结束线程,如果线程里面起子线程,主线程结束后子线程不会结束。
6、进程可以强制杀死,进程池有函数可以设定时间超时,可以用manager管理进程之间的共享变量list等。
7、协程是单进程,但是可以并行激活方法函数,在方法进行IO或其他阻塞时候,切换另一个方法运行。
8、主线程开启协程,杀死主线程可能协程会出错,解决办法,开启时协程用进程开启。
9、kafka访问失败报错NoavaliveBroke,可能是由于没有配置好访问地址和端口,或者可能由于kafka的配置listener有问题。
10、redis是单机器单进程单线程的,基于内存实现的,所以处理速度超级快,不断进行切换线程,有点类似于python版的多线程。
11、redis集群命令keys一般处于禁用状态,和单机不太一样,但是接口还是一样的。
12、grpc需要配置proto,编译生成源文件和头文件。
以上是本人在项目中体会到的,在这里记录一下,由于空闲时间不多,在这里只是简要总结一下,还有就是程序员要想成为响当当的,要追求新知识,不要认为精通一门语言就够了,我们都是想接触自己熟悉的语言开发项目,不想面对其他不熟悉的语言,但是要想成为厉害人物,就要学会去面对,c++虽然对于初学者很难,但是我觉得这门语言很重要,不应该老是回避它,要懂得击破,现在很多企业注重c++,python,尤其是搞算法的,c++必须要会,立个flag,今年攻破c++。