分类 python 下的文章

bjmayor发布于2022-02-28

Python信号相关概念及运用

Python信号相关概念及运用

[TOC]

介绍

信号是软件中断。信号提供了一种处理异步事件的方法。

不存在编号为0的信号。kill函数对信号编号0有特殊的应用。POSIX.1将此信号编号值称为空信号。

很多条件可以产生信号:

  • 当用户按某些按键时,引发终端产生的信号。(DELETE,Ctrl+C,Ctrl+,Ctrl+Z)。这些键可以自定义。
  • 硬件异常产生信号:除数为0、无效的内存引用等。
  • 进程调用kill(2)函数可将信号发送到另一个进程或进程组。有限制:只能发送给同一用户的进程,或者发送信号的进程所有者是超级用户。
  • 用户可用kill(1)命令将信号发送给其他进程。
  • 当检测到某种软件条件发生,并应将其通知有关进程时也产生信号。例句SIGURG、SIGPIPE、SIGALRM。

信号是异步事件的经典实例。产生信号的事件对进程而言是随机出现的。
可以要求内核在某个信号出现时按照下列方式之一进行处理:

  1. 忽略此信号。大多数都可以,但有两个不能忽略,他们是SIGKILL和SIGSTOP。原因是:它们向超级用户提供了使进程终止或停止的可靠方法。
    另外,有些如果忽略由硬件异常引发的异常(如除0),则进程的行为是未定义的。
  2. 捕捉信号。自定义信号处理函数。注意:不能捕捉SIGKILL和SIGSTOP信号。
  3. 执行系统默认动作。针对大多数信号的系统默认动作是终止进程。

阅读全文»

bjmayor发布于2022-02-28

Python多进程相关概念及解释

Python多进程相关概念及解释

[TOC]

介绍

由于GIL的存在,为了利用多核的优势,Python程序员不得不使用多进程。(多线程在PYthon中仅在IO密集型任务中有优势)。
Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。multiprocessing支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。
感觉使用方法和threading差不多。

阅读全文»

bjmayor发布于2022-02-28

Python标准库abc介绍

Python标准库abc介绍

[TOC]

前言

很多书都没有提到abc。python本身并没有抽象类,抽象函数。它是通过标准库abc提供的。
以前也热衷于造轮子,现在越来越趋向于去熟悉有哪些轮子,能不造则不造,这样开发起来效率快多了。
用于写代码的时候越少,用于思考的时间就越多。
之前看到的几本书,<python标准库>,<python绝技:运用python成为顶级黑客>,<Head+First+Python(中文版)>,<Flask Web开发:基于Python的Web应用开发实战>,都没有看到abc库。
直到<python学习手册>里才看到。这本书我也是极力推荐阅读的。

最近看到的<Python高手之路>更是极力推荐abc库,说是大多数人居然不知道abc库的存在,还自己去造轮子。

阅读全文»

bjmayor发布于2022-02-28

python之logging模块

python之logging模块

[TOC]

介绍

logging模块是用来做日志记录的。
logging.config用来配置。
logging.handlers用来处理日志,可以是屏幕输出,可以是写文件(文件又可以自动切割文件),可以是发邮件。

阅读全文»

bjmayor发布于2022-02-27

urllib vs request

Python3标准库urllib

[TOC]

前言

做web开发的,和http请求打交道最多了,不得不熟悉的就是urllib。当然爬虫也经常用。并且有好的第三方库requests。
本文就介绍这些东东。
note: 是在python3.5下测试运行。

阅读全文»

bjmayor发布于2022-02-27

SQLAlchemy介绍

SQLAlchemy介绍
[TOC]

前言

玩Python的人很有必要非常熟悉SQLAlchemy。因为它是python中最主流的orm。
我之前只在flask中用过。发现用的还不是很顺畅,不能手到拿来。故又整理了这篇文章。

查询sql有几个点:

  1. 直接原始语句查询。
  2. 对象关系映射,即orm
  3. 其它关联的是数据库链接池和事务。

下面一一道来。

阅读全文»