美文网首页
问题笔记01

问题笔记01

作者: shenzhen世界之窗 | 来源:发表于2019-07-10 22:02 被阅读0次

    If __name__ == ‘__main__’:

    理解:__name__ 内置变量,可用于反映一个包的结构,可表示当前模块的名称

    2018-09-14日,dir(__builtins__)查看内置变量和方法。要熟记常用的模块和基本用法,有计划地学习新的模块。

    Python -m test.py  Python把当前工作目录添加到sys.path中。

    Python test.py  Python把脚本所在目录添加到sys.path中。

    Python的-m参数用于将一个模块或者包作为一个脚本运行。__main__.py文件是一个包或者目录的入口程序。

    当加上-m参数时,Python会把当前工作目录添加到sys.path中;而不加-m时,Python则会把脚本所在目录添加到sys.path中。

    2018.08.03日:

    Magic methods魔法方法

    __init__()对象初始化时调用

    __new__() 构建一个实例时调用。只有继承于object的类,或者更准确的说,祖先类是object类才有__new__方法;__new__必须要有返回值,创建一个实例。

    2018-09-14日,__new__方法它只取下 cls参数,并把其他参数传给__init__。  __new__和 __init__是对象的构造器,__del__是对象的销毁器。当Python解释器退出但对象仍然存活的时候, __del__并不会执行。所以养成一个手工清理的好习惯是很重要的,比如及时关闭连接。

    】。

    __all__属性,则只有__all__内指定的属性、方法、类可被导入。

    单下划线开头:表示方法不是API的一部分,不能直接访问的类属性,需要类提供的接口进行访问。_foo:一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.

    双下划线开头:表示子类不能覆写该方法。类的私有成员(作用:防止子类创建的对象与基类创建的对象出现命名空间冲突的问题;)

    __foo:是一种保护方式,防止子类的篡改和覆盖。这个有真正的意义:解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名.

    开头结尾都是双下划线:Python里面特殊方法专用的标识。__foo__:一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突.

    2018.08.06日:

    PLSQL Developer是Oracle数据库开发工具。

    Dicom (Degital Imaging and Communications

    in Medicine) 医学数字成像和通讯标准

    IOD (information object definitions) 信息对象定义

    DIMSE (DICOM Message Service Element) DICOM消息服务元素

    SOP (service objects pair) 服务对象对

    Store 储存,贮藏

    Vmware workstation无法界面化安装vmware

    tools 的问题:

             1.sudoapt-get upgrade

             2.sudoapt-get install open-vm-tools-desktop –y

             3.sudoreboot

    Locate 查找文件或目录,可以在搜寻数据库时快速找到档案。不搜索具体目录而是搜索一个数据库/var/lib/mlocate/mlocate.db

    locate vi | grep 'vi$' |xargs ls –al  

    vim配置如果对所有用户有效,修改/etc/vim/vimrc;用户对当前目录下的.vimrc修改只对本用户有效。(vi ~/.vimrc) 并在文件中进行配置。

    管道:主要用于接受输入的内容并进行操作处理。

    重定向:主要用于对标准输入输出的处理,控制输出的路径是屏幕还是标准文件中。

    Xargs: 产生某个命令的参数。把|读入的stdin(标准输入)的内容,作为参数传给后面的命令。

    正则表达式工具:vi ,grep , sed , awk

    2018.08.07日:

    DICOM:(Digital Imaging and

    Communication in Medicine)医学数字成像和通讯标准

    HIS: (Hospital Information System)医疗信息系统

    LIS:(Loboratory

    Information Management System)实验室(检验科)信息系统

    PACS: (Picture Archiving and Communication

    System)影像归档和通信系统

    RIS: (Radiography Information System)放射科信息系统

    HL7:医疗信息交换标准

    IOD: (Information object definitions)信息对象定义

    MRI: (Magnetic Resonance Imaging) 核磁共振成像

    Windows系统下如何安装并配置PLSQL

    Developer和Xshell?

    答:使用plsql远程连接数据库需要安装plsql工具(PLSQL Developer)+oracle的远程客户端(instantclient);

    步骤:

    1. 在路径下解压instantclient并配置环境变量;

    2. 安装成功plsql后,不登陆状态下打开, 工具—首选项:指定Oracle客户端的安装路径(oracle主目录名和OCI库)

    3. 配置tnsnames.ora文件

    remote_oracle =(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 5568))) (CONNECT_DATA = (SERVICE_NAME = oral)))

    Xshell的作用:端口转发

    __repr__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员。终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str__只是覆盖了__repr__以得到更友好的用户显示。

    DICOM信息模型和信息定义:

    2018.08.08日:

    贝叶斯定理:

    贝叶斯方法:

    贝叶斯网络:

    单例模式:

                  Super()调用父类(超类)的一种方法。解决多重继承问题(查找顺序(MRO, 类的方法解析顺序表),重复调用(钻石继承))

    Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用 super().xxx 代替super(Class,self).xxx

    2018.08.09日:

    DICOM是专门用于医学图像的存储和传输的标准名称。

    DICOM信息定义:

    DICOM信息模型:患者层次,研究层次,序列层次,图像层次

    杭州联众医疗科技股份有限公司

    全球影像;            医疗大数据云服务;    移动远程诊疗云服务; 个人健康云服务; 医疗学术云服务

    (开放、合作、定制)(丰富的影像资源,高效稳定的呈现)              (移动阅片会诊,双向转诊,视频会诊)       (预约挂号,寻医问诊,患友交流,健康档案,口袋病例)  (教学指导,病例研讨,同步协作) 

    2018.08.10日:

    PACS系统优点:图像后处理功能;简便快速;医学影像数据保存的完整性;

    PACS是由医疗设备(CT、DR、DSA、MRI等)、医生工作站(Review Station)、交换设备(Switch)、服务器(Server)、数据库(Date Base)等主要部分组成。

    医学图像信息是多样化的,如B超扫描图像、彩色多普勒超声图像、核磁共振(MRI)图像、CT图像、X线透视图像、ECT图像、各种电子内窥镜图像、显微镜下病理切片图像等。

    二维码胶片:

    口袋病例:把多种格式的医疗信息(影像、病理、超声、心电、检验、报告等)整合在同一窗口显示

    云存储:拥有金融级防护以及多备份式存储的阿里云技术

    PACS系统主要包括的内容:

                  图像采集:

                  传输存储:影像设备和PACS系统之间的传递使用DICOM标准。

                                大中型的PACS用不同的存储设备:

                  近线存储:存储随时使用的图像,该类设备常用硬盘阵列来实现

                  远线存储:存储不常用的图像后处理

                  离线存储:存储要永久保存的资料,如存放于光盘,磁带等

                  图像显示和处理:显示各种影像(彩色的黑白的,静态的动态的);像进行处理(图像窗宽窗位调整,放大缩小,增强,锐度调整,翻转旋转,标注,开窗以及漫游等,图像面积、周长、灰度等的测量,还有重建技术(如矢冠状面图像、三维重建、伪彩等)、统计技术等)

    第一阶段:了解公司业务流程,DICOM协议和PACS系统

    第二阶段:研究前置系统数据表字段,处理报告和影像资料

    2018.08.11日:

    Vim视频教程的学习基本操作:

                  上下左右移动:

                  :sp分屏

                  :!  系统命令

                  编辑模式,导航模式,命令模式

                  上一屏:ctrl + F ;下一屏:ctrl + B

                  Ctrl + v进入可视 块

                  V进入可视模式,选择多行

                  搜索  /搜索内容     n表示下一个              全局替换: :%s/旧/新

                  局部替换:shift +v局部选中,shift+: ,  s/old/new

                                某一行多次替换::%s/旧/新/g

                  Ctrl + n自动补全

                  多行注释和删除多行注释

                  多行删除

    中阶操作:

                  某行的开头和行尾:0 行首;shift + $ 行尾

                  文件的首行和尾行:gg文件首; shift+ g文件尾

                  跳到最近编辑的位置G + ;                 G +,

                  跳到最近打开的文件 ctrl + o和ctrl + i

                  复制和粘贴:yy和p   有多种形式

                  进入编辑方式:I 在光标前插入,a在光标后插入,o在光标下一行插入,shift +o在光标上一行插入

    进阶和周边操作:

                  全局查找和替换

                  设置vim背景色:set background = red

                  Vim代码配色:colorscheme  red

                  横屏分屏和竖屏分屏:

                  代码多行注释:

                  代码格式化:

                  使用Rails插件:

                  显示和隐藏代码行数:

                  粘贴模式:

                  代码左移(shift + <),右移(shift+ >)和undo,  redo(ctrl +r):

                  多行代码合并成一行:shift +j

    Vim配置文件

    2018.08.13日:

    跳板机地址: https://fortress.eimageglobal.com用户名:shenzl

    密码:6t3Qtpx6BmLGWfIf 密钥密码:ZX2DbUkQBMqTHOiP

    密钥下载url: https://fortress.eimageglobal.com/juser/key/down/?uuid=feae8cd95bb24a378e11ac3c3a68fe28该账号密码可以登陆web和跳板机。

    [if !supportLists]1.       [endif]连接堡垒机

    SSH终端远程登录(Xshell或securecrt)

    名称:自定义名称即可。

    协议:选择SSH。

    主机:填入fortress.eimageglobal.com

         或者IP: 119.37.196.188(电信)/211.155.234.188 (网通)

    端口号:55122

    方法:选择Public Key

    用户名:即jumpserver的用户名,和web登陆的用户名一致。(用户名:shenzl;密码:6t3Qtpx6BmLGWfIf)

    用户密钥:点击浏览——导入刚才下载的ssh密钥(.pem文件)——导入完后选中并点击确定。(如果需要重新下载密钥或忘记ssh密钥密码的话,可以在web界面的修改信息处重新生成)

    怎样查看医院使用的什么数据库?

    Oracle 默认端口 :1521

    Sql server 默认端口 :1433

    Mysql 默认端口 :3306

    报告对接程序存放目录:

                                切换到root用户;再切换到hisfep用户;进入到/home/hisfep/tools目录,ls *report* -l

    2018.08.14日:

    1.例如:04710040.lzyl 非正常IP的 speedtest 获取前置公网IP  例如:172.28.2.186 通过世道机房中转  真实IP是119.37.196.186

    Rz 上传文件

    Sz 下载文件

    2.

    进程运行日志目录/home/hisfep/log,进程日志hisfep_report_new.log,异常监控日志supervisord_hisfep_report_new.log

    3.存储过程的报错日志在/tmp/下   ;printdebuglog函数打印的日志

    4. 查看医院数据库的配置信息

                  切换为root用户(密码:redhat或china)%&!root),然后切换为hisfep用户(su - hisfep),打开/etc/hisfep/hisfep.conf

    2018.08.15日:

                  oracle里面 := 是存储过程的 赋值的意思

    select instr('5556','6') from dual

    oracle存储过程:

                  https://www.cnblogs.com/taiguyiba/p/7809310.html

    spool是oracle sqlplus提供的一个控制命令。可以利用spool和select语句的组合动态的生成一些sql脚本或者一些数据,在sqlplus中用来保存或打印查询结果。

    Centos系统中安装oracle数据库:

                  Root用户,/root/app_pkg/下的oracle数据库

                  解压:tar     -zxvf  filename.tar.gz       -C  指定文件夹目录

                  压缩:tar   –zcvf   filename.tar.gz

    2018.08.16日:

    [if !supportLists]1.       [endif]数字

    像while 1, while 2, while -1, while -2, while x, 只要x不等于0, 就是条件永远为真, 等价于while True

    while 0 等价于while False

    [if !supportLists]2.       [endif]其他变量,如字符串, 列表, 元组等

    while '1', while

    [1, 2], while (1, 2), while x, 只要len(x)>0, 就是条件永远为真, 等价于while True

    while '', while

    [], while (), while x, 只要len(x)=0, 就是条件永远不为真, 等价于while False

    oracle中字符查找函数:

                  格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串)

    格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] )  

    /   instr(源字符串, 目标字符串, 起始位置, 匹配序号)

    解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。

    Python多线程研究:

                  线程之间可以共享内存和变量,资源消耗少;线程之间的同步和加锁比较麻烦。

    在Unix环境中,多进程和多线程资源调度消耗差距不明显,Unix调度较快。

                  Python多线程在IO密集型任务中还是很有用处的,而对于计算密集型任务,应该使用Python多进程。

    重启进程服务: root用户的home目录下,使用supervisorctl命令管理进程, 重启restart  hisfep_resport_new.py

    常用的前置系统数据表:

    T_STUDY基础检查表:

    T_SERIES基础系列表       

    T_IMAGE基础影像表      

    T_IMAGEREPORT基础影像检查报告表

    2018.08.17日:

                  思考:多角度深入思考问题。             上班时间全身心地投入到工作中。

                  总结:

                  http://60.190.245.75:8088客服系统外网地址

    lsnrctl  status  查看oracle状态

    crontab   定时执行任务

    gerp (global search regular expression and print out the line)全面搜索正则表达式并把行打印出来:一个强大的文本搜索工具

    2018.08.20日:

    以下日志文件存放的什么日志信息?

    Hisfep_incre_upload.log

    Hisfep_monitor.log

    Hisfep_report_new.log

    Hisfep_scan.log

    Hisfep_server.log

    Hisfep_stat.log

    Hisfep_transport.log

    Supervisord_hisfep_monitor.log

    Supervisord_hisfep_report.log

    Supervisord_hisfep_scan.log

    Supervisord_hisfep_server.log

    Supervisord_hisfep_transport.log

    图文报告位置:

    /home下的dicom文件夹中,处理前放在upload和处理后放在upload_back文件夹中

    2018.08.21日:

    登录用户名:  pp_maintain

    密码:   fEp)%OnLy&!his

    图文二维码生成规则

    [if !supportLists]1.       [endif] 图文二维码文件命名规则

    胶片文件:flm_时间戳_医院ID_检查号_患者ID.jpg

    报告文件:rpt_时间戳_医院ID_检查号_患者ID.jpg

    2.          生成图文二维码的URL模板规则

    http://业务中心域名前缀.业务中心主域名/imageInterface/action/getWebChatImage?hospitalId=&time=&patientId=&accessNumber=

    [if !supportLists]2.       [endif]图文二维码传输协议

    Centos关闭防火墙:

    Centos 7版本:

    systemctl stop firewalld.service #

    停止

    systemctl disable firewalld.service #

    禁用之前的版本:

    service iptables stop #

    停止

    chkconfig iptables off #

    禁用

    设备推送

    文件方式入库

    2018.08.22日:

    查询前n条数据

                  Mysql:             select * from table limit  n;

                  SQLServer:   select top n * from table;

                  Oracle:            select * from table whererownum<=n;

                  Sybase:

    To_char():Oracle数据库中的

    TO_CHAR是把日期或数字转换为字符串,不能指定字符串长度。使用TO_CHAR函数处理数字: 

    TO_CHAR(number,

    '格式') 例如:TO_CHAR(salary,’$99,999.99’)

    使用TO_CHAR函数处理日期:

    TO_CHAR(date,’格式’);

    TO_CHAR(newdate,’yyyy-mm-dd’)

    To_date():把字符串转化为日期

    CONVERT函数格式:CONVERT(data_type,expression[,style]):Sql server数据库中的

    说明:

    data_type:目标系统所提供的数据类型,如果转换时没有指定数据类型的长度,则SQL Server 自动提供长度为 30。

    expression:是任何有效的 Microsoft® SQL

    Server™ 表达式

    style:【可选参数】日期格式样式,此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到

    Rownum的用法

    简单CASE表达式,使用表达式确定返回值.

      语法:

      CASE search_expression

      WHEN expression1 THEN result1

      WHEN expression2 THEN result2

      ...

      WHEN expressionN THEN resultN

      ELSE default_result

     搜索CASE表达式,使用条件确定返回值.

      语法:

      CASE

      WHEN condition1 THEN result1

      WHEN condistion2 THEN result2

      ...

      WHEN condistionN THEN resultN

      ELSE default_result

      END

    2018.08.24日:

    Reportinfoview中的study_uuid影像检查UUID

    PL/SQL 过程性语言/结构式查询语言

    Oracle的||是字符串连接符    

    In , out ,  in out

    2018.08.27日:

    不用转发,直接连接时用:

                  转发用户:  imageonly_ssh    密码:ssh(%&!ImaGeonly

    [if !supportLists]1.       [endif]修改py文件中字段,视图

    [if !supportLists]2.       [endif]和py文件对应的存储过程,医院ID号

    [if !supportLists]3.       [endif]上传, 给py文件可执行权限 ;在tools文件夹下创建对应py文件的软连接(ln –s source.py   object.py ); supervisorctl配置监听,在/etc/supervisor/conf.d下拷贝一个文件hisfep_report_new.conf并修改;重启后查看程序是否正常运行supervisorctl

    reload(root用户身份)。

    [if !supportLists]4.       [endif]可以在存储过程的MARKUPLOADING文件中注释掉(报告首次上传,重传)update语句

    或者暂停py文件上传:进入到supervisorctl中,stop hisfep_report_new

    如果需要重传数据则先中心删除数据,自己再在前置t_study表里更新report_flag=0并提交, 然后删除t_imagereport表中的相应记录并执行提交。

    查询服务器的编码格式:select userenv('language') from dual;

    ls –tlr

    netstat : 监控TCP/IP网络, 可以显示路由表,实际的网络连接以及每一个网络接口设备的状态信息

    tail  : 依照要求将指定的文件的最后部分输出到标准设备, tail会自己主动刷新

    more :

    less:

    cat: 已经搞定

    head:

    ps和grep

    lsnrctl: oracle监听命令

    ln为某一个文件在另外一个位置建立一个同步的链接(硬链接/软连接)

    crontab: 为个人用户维护定时任务文件

                  每一个用户都可以拥有属于自己的定时任务,定时任务文件默认以用户名命名,并放在/var/spool/cron目录

                  cron服务会每分钟检查一次/etc/crontab、/etc/cron.d/和/var/spool/cron/中的所有文件,并依此执行

                  可以通过cron.allow 和 cron.deny文件管理用户使用cron服务的权限

    Chkconfig工管理/etc/rc.d/init.d或/etc/init.d/目录下的服务启动脚本具

    2018.08.28日:

                  查看网络MAC地址:cat /etc/udev/rules.d/70-persistent-net.rules

                  修改主机名:vim /etc/sysconfig/network

                 配置网卡:vim /etc/sysconfig/network-scripts/

                  修改DNS:vim /etc/resolv.conf

    2018.08.29日:

    由于修改Centos的主机名导致Oracle数据库不能登录:

    主机名和IP配置文件/etc/hosts

    网络IP地址  主机名或域名  主机名别名

    可帮助解决的问题:远程登录linux主机过慢问题;双机互连

    Oracle配置方面的修改:

    Vim $ORACLE_HOME/network/admin/listener.ora

    Oracle中的count(0),count(1),count(*)

    Replace()

    Regexp_replace()

    Instr():字符查找函数

    2018.08.30日:

    [^0-9]匹配的是任何不在0到9范围内的字符串

    [charlist] 字符列中的任何单一字符

    [^charlist]或者[!charlist] 不在字符列中的任何单一字符

    2018.08.31日:

    学习Oracle笔记:

                  DISTINCT将NULL值视为重复值。

    2018.09.4日:

    安装部署ommanager步骤:上传相关文件压缩包(不能再/home/fw_plat/中),解压后执行install.sh文件,重启服务即可。

    使用+号拼接字符串时会生成一个新的字符串,需要重新申请内存,拼接字符串较多时会影响效率。

    Oracle中:GENERATED BY DEFAULT AS IDENTITY 默认生成的身份

    Start with 用来标识哪个节点作为查找树形结构的根节点

    2018.09.05日:

    ‘’’

    珍惜这样的好机会,术业有专攻,目前在深度上下功夫。

    工作日志:9:20~10:30

    ’’’

    supervisor 是一个 C/S 模型的程序。用Python编写的进程管理工具。

    server: supervisord

    client: supervisorctl

    常用命令

    [if !supportLists]1.       [endif]supervisord: 初始启动Supervisord,启动、管理配置中设置的进程;

    [if !supportLists]2.       [endif]supervisorctl stop(start, restart) xxx,停止(启动,重启)某一个进程(xxx);

    [if !supportLists]3.       [endif]supervisorctl reread: 只载入最新的配置文件, 并不重启任何进程;

    [if !supportLists]4.       [endif]supervisorctl reload: 载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程;

    [if !supportLists]5.       [endif]supervisorctl update: 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;

    grep :

    Django框架:

    2018.09.06日:

     用户:  imageonly_ssh    密码:ssh(%&!ImaGeonly

    #   os.getcwd()方法用于返回当前工作目录

    #   os.path.getatime(file)输出文件访问时间

    #   os.path.getctime(file)输出文件的创建时间

    #   os.path.getmtime(file)输出文件最近修改时间

    采纳率:59%12级2013.07.14

    modify是修改字段类型和长度的(即修改字段的属性)。

    alter

    是修改表的数据结构(modify是alter的一种用法)。

    update

    是修改数据内容的。

    modify和alter执行命令完成即生效,update语句要“commit”之后才会生效

    2018.09.07日:单利模式(下周一给宋总讲明白)

    hasattr()判断对象是否包含对应的属性

    with的基本语法如下,EXPR是一个任意表达式,VAR是一个单一的变量(可以是tuple),”as VAR”是可选的。

    上下文管理器,用于简化try…except…finally的处理流程,with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常

    try/except 用于错误处理;流程控制

    2018.09.10日:

    Set ff=UNIX  程序是用UNIX格式而不是dox格式

    Supervisorctl的配置文件显示报错:

    由于自适应服务连接失败。

    切换到root用户下:TDSVER=8.0 tsql -H  医院IP  -U  用户名  -P  密码-p 1433

    读义乌中医院的hisfep_系列文件笔记:

    Shlex模块实现了一个类来解析简单的类shell语法,可以用来编写领域特定的语言,或者解析加引号的字符串;shlex模块提供的解析器。

    SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作

    Shutil 高级的文件操作模块

    tarfile模块的主要作用是用来加压缩和解压缩文件

    platform获取系统平台与python平台的信息

    [if !supportLists]1.       [endif]连接池,多线程,队列如何综合使用?

    [if !supportLists]2.       [endif]为何从一个模块导入多个*时,需要分几次?

    2018.09.11日:给自己定个小目标:Python基础编程,Python核心编程 年底前完成。Python开发为主,解决生产中的问题为辅。

    Help(函数或方法) 查看帮助信息

    查阅资料多线程笔记:

    多线程,线程同步及通信,线程优先级队列,线程池,并发,主线程

    生产者消费者模式

    闭包可以使得内函数返回的局部变量的生命周期与整个项目相同

    @语法糖

    可以多层嵌套

    使用多个装饰器

    装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能

    经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限验证等场景。

    2018.09.12日:

    进程:系统资源分配的基本单位

    线程:进程运行的最小单位

    生产者消费者模式笔记:

    优点:

    解耦:低耦合

    并发:生产者和消费者是两个独立的并发体,不会因为彼此的处理速度而发生阻塞。

    支持忙闲不均

    Python的线程是真正的Posix Thread 而不是模拟出来的线程。

    通过锁,防止发生竞态条件

    同步,锁,死锁?

    线程中,条件(condition)可以让一个或多个线程进入wait,直到被其他线程notify

    生产者与消费者之间的缓冲区称之为仓库

    消费者:消费前检查队列若为空调用Condition实例的wait(),消费者进入wait同时释放所有的Lock, 除非被notify否则不会运行。

    生产者:Lock被释放后,生产者acquire这个锁。执行Condition的notify()后消费者被唤醒,但生产者通过condition.release()显式释放lock后消费者才开始运行。

    生产者调用队列的put方法来插入数据。

    put()在插入数据前有一个获取lock的逻辑。

    同时,put()也会检查队列是否已满。如果已满,它会在内部调用wait(),生产者开始等待。

    消费者使用get方法。

    get()从队列中移出数据前会获取lock。

    get()会检查队列是否为空,如果为空,消费者进入等待状态。

    get()和put()都有适当的notify()。

    2018.09.13日:

    Linux后台进程管理利器supervisor:

    Supervisord是用Python实现的一款进程管理工具,如果用 supervisord 来管理进程,进程需要以非daemon的方式启动。能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启

    Supervisor官方文档?

    Python模块笔记:

    Python搜索路径

    Python解释器

    当前命名空间

    每个模块都有自己独立的符号表

    每个模块都有一个__name__属性

    有些模块被直接构建在解析器里

    包是一种管理Python模块命名空间的形式,采用“点模块名称”

    目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包

    ,协程:

    正则表达式:

    ‘’’

    需要大量实例和练习。概念需要梳理

    ’’’

    特殊字符:()[]{}.*?^$|

    点字符用于匹配除换行符外的人以单个字符。

    字符类,解析很能拼错的单词

    普通文本字符:

    脱字符(^)

    ^$ 过滤空白行

    特定字符类

    问题汇总的回顾总结:

                                for record indb.cur:等价于records = db.cur.fetchall()   for record in records:

    相关文章

      网友评论

          本文标题:问题笔记01

          本文链接:https://www.haomeiwen.com/subject/kxakkctx.html