0%

症状

最近在开发的lightgbm树模型,发现服务在处理了一定量请求后会卡死,请求无响应。

pstack之后发现, 进程卡在libgomp.so这个动态库的函数中. 证实确实是卡死

1
2
3
Thread 8 (Thread 0x7f8eb7900700 (LWP 1859)):
#0 0x00007f8e9def4af1 in ?? () from /usr/lib64/libgomp.so.1
#1 0x00007f8e9def23a0 in ?? () from /usr/lib64/libgomp.so.1

尝试

首先尝试google lightgbm hang, 看了前几条记录.

发现,github上的一个issue, 顺着发现官网文档上早就记录里这个问题, 并且提供了解决办法.

阅读全文 »

今年的主题是应该是变化吧,想要离开令自己疲惫的环境,破釜沉舟了一把。结果虽不说如意,却也给平淡的生活注入了变化。

另一个,还是常年与懈怠和懦弱斗争,不说屡战屡败,已不远矣。戒之戒之

阅读全文 »

本文为整理以前的读书笔记

概述

这本书应该是对三观冲击最大的一本,在大学时第一次读,先是震惊,再是愤怒,然后是害怕。

当然现在看来,又有一些不一样的见解。一直自认为,思维深刻,三观稳定,然而也不可避免地被各种书籍媒体塑造。

想要保持独立思考是何其之难,再者,就算能独立思考,人们接受的信息都是片面的,有怎能确保得出正确的结果呢?

阅读全文 »

本文为整理以前的读书笔记

简介

《冬吴相对论》是一档商业脱口秀广播节目,节目由原凤凰卫视著名主持人梁冬与《21世纪商业评论》发行人吴伯凡共同主持。

本书就是节目的内容集结而成,对于经济知识的扫盲有些意义,但也有电视节目的通病,知识流于细碎,没有体系。

初学者用来初步了解经济学现象,还是很有意义的。

阅读全文 »

本文为整理以前的读书笔记

简介

书如其名,是作者对与道德或者说真理的思索,内容多的短小的片段。

虽然连贯性略微缺失,但是思想的光芒无法掩盖,适合睡前阅读。

从文字间能看出,作者尚未能与道融而为一,尚未知行合一,故常有无力与痛苦之感,作者难道也是个悲观主义者吗?

阅读全文 »

本文为整理以前的读书笔记

简介

潜规则应该是对三观冲击最大的书之一,也是作者在读遍历史的总结。对于政权的更迭,剖析其原因,以及背后的潜规则。

此书可以和《血酬定律》搭配阅读,效果更佳。

阅读全文 »

缘起

话接上回,说是接手了一个82年的拉菲Python项目,这次又发现了一个新坑

项目中用了一个上下文类,用于存储本次请求的一些数据,在开发过程中我想把这个上下文类dump成json,详细分析里面的数据,然而发现上下文类的行为不符合预期

阅读全文 »

本文为整理以前的读书笔记

简介

历史到底是什么样子的?很难确定。

我们所经历的生活,在若干年后就会是历史,但是我现在仍看不清现实。想必后来人看现在也是一样的,仿佛笼罩在烟尘之中。

有的台湾人对大陆建国之后的历史有着错误的认识,视我们为洪水猛兽,但反过来,我们对他们的了解又有多少呢?

这本书就是以台湾历史亲历者的角度,诉说进几十年的历史,普通人眼中台湾的过往。

阅读全文 »

本文为整理以前的读书笔记

简介

国史大纲是钱穆先生大作,本是民国大学生的历史教科书。
所谓大纲者,不在完备,而是有提纲振领的作用。从中更是能体会到文化的精神,不是史料堆砌,不是无感情的上帝视角。

笔记

国家财赋偏向南方,向宋始

阮云:明朝时,科举分南北榜,南远胜北,自是有其缘由。

定州何明远资财巨万,家有绞机百张 – 太平广记

阮云:所谓资本主义萌芽

阅读全文 »

缘起

最近接手了一个82年的拉菲Python项目,简直酸爽。
Python版本用的是2.7.5,里面用的第三方库各种老旧,潜藏了不少深坑。这次我们就先讲enum库的坑,其他有空再聊。

enum是一个枚举类型的第三方库,在Python3.4以后就作为官方库存在了,使用参考
所以如果用新版本的Python就不会存在这个问题了,版本老旧害死人啊。

阅读全文 »

gevent是一个使用完全同步编程模型的可扩展的异步I/O框架。

通用monkey.patch_all() 所有io操作函数, gevent可以以同步的方式编写异步代码. 在不更改代码的同时就可以使系统并发性能得到指数级提升。

这里有一个局限, c扩展中的io操作无法被patch, 会导致整个server阻塞

阅读全文 »

浮生六记算是沈复的自传吧,其人才情虽好,德行却是没什么称道的地方。当然他前半生神仙眷侣般的生活,也不知惹多少人羡慕,红袖添香夜读书大概就是如此吧。

名为六记,只余其四,也是人生一大憾事

笔记

卷一 闺房记乐

其形削肩长项,瘦不露骨,眉弯目秀,顾盼神飞,唯两齿微露,似非佳相。

阮云:一会儿就该说真香了

余镌“愿生生世世为夫妇”图章二方,余执朱文,芸执白文,以为往来书信之用。

阮云:此生能得一良侣已是奢望,又怎么敢求生生世世。

山果收获,必借猴力,果然。

余调其言,如蟋蟀之用纤草,渐能发议。其每日饭必用茶泡,喜食芥卤乳腐,吴俗呼为臭乳腐,又喜食虾卤瓜。

阮云:喜欢饭后喝茶,腌制食品,早夭有因

情之所钟,虽丑不嫌。

其癖好与余同,且能察眼意,懂眉语,一举一动,示之以色,无不头头是道。

于是相挽登舟,返棹至万年桥下,阳乌犹未落山。舟窗尽落,清风徐来,绒扇罗衫,剖瓜解暑。

阅读全文 »

一、原理

1.1 一次简单的日志记录

1
2
3
4
5
6
7
8
9
10
11
import logging
logger = logging.getLogger(__name__)

try:
1/0
except Exception as e:
logger.debug('debug %s', e)
logger.info('info %s', e)
logger.warning('warning %s', e)
logger.error('error %s', e)
logger.exception('exception %s', e)

output

1
2
3
4
5
6
7
warning division by zero
error division by zero
exception division by zero
Traceback (most recent call last):
File "test.py", line 5, in <module>
1/0
ZeroDivisionError: division by zero

  1. logging.getLogger 获取一个记录器, 一般以模块名称命名
  2. 调用日志记录器的相应方法记录日志
阅读全文 »

SQLAlchemy core 是SQLAlchemy的核心部件,主要负责生成sql查询和具体的数据库操作,SQLAlchemy 就是构建在core之上的。

在不需要对象映射的时候,使用core而不是orm,可以降低数据库操作成本,提高性能。

Table映射

创建数据库连接

1
2
from sqlalchemy import create_engine
engine = create_engine('sqlite:///test.sqlite3', echo=True)

表结构定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey, Index
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('fullname', String),

# place an index on col1, col2
Index('idx_col12', 'name', 'fullname'), # 添加索引
)

addresses = Table('addresses', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', None, ForeignKey('users.id')),
Column('email_address', String, nullable=False)
)
阅读全文 »

ORM是指对象关系映射(英语:Object Relational Mapping),是一种程序设计技术,是数据库记录和程序对象之间的映射关系。

使用ORM可以简化数据库的操作,使数据操作更加面向对象,并且程序逻辑和具体数据库解耦。缺点是会有一定的性能损耗。

Python中的ORM主要有Django ORM,SQLAlchemy, peewee; 其中Django ORM只能和Django框架一起使用,SQLAlchemy功能比较全,peewee较为轻量。

SQLAlchemy还可以不使用其ORM,只使用SQLAlchemy core作为一个通用数据库连接器。

阅读全文 »