OOP 面向对象反射

# __call__方法
# class Foo(object):
# def __call__(self, *args, **kwargs):
# return "i am call"
#
#
# f = Foo() # f 是Foo的对象
# print(f()) # f() 对象加括号执行当前对象下__call__ 函数 # __setattr__ , def __getattr__ 属性的创建 赋值 提取
# class Foo(object):
# # 属性赋值
# def __setattr__(self, key, value):
# print(f'{key},{value}')
#
# # def __getattr__(self, key, value):
# # print(key)
# # 获取属性名
# def __getattribute__(self, item):
# print(item) # f = Foo()
# 调用__setattr__ 方法;属性的创建及赋值
# f.name = "anwen" # 对象.name 对象打点调属性
# 调用__getattribute__ 方法
# f.name # __setitem__ __getitem__
class Foo(object):
# 字典的键值
def __setitem__(self, key, value):
# name anwen
print(key, value) # 字典的键
def __getitem__(self, item):
print(item) f = Foo()
# 调用 __setitem__ 方法;
f["name"] = "anwen"
# 调用__getitem__ 方法;获取的是字典的键
print(f["name"])

偏函数

from functools import partial

# def abfunc(a, b):
# print("a:", a)
# print("b:", b)
# return a + b
#
# # 将原函数和原函数接收的参数一并存放,返回新函数 在执行新函数时 将参数传入原函数中一并执行
# new_ab = partial(abfunc, a=2, b=3)
# print(new_ab)
# print(new_ab()) # 传入 x ,等待计算
def abfunc(a, b, x):
print("a:", a)
print("b:", b)
return a + b + x # 将原函数和原函数接收的参数一并存放,返回新函数, 在执行新函数时 将参数传入原函数中一并执行
new_ab = partial(abfunc, x=4)
print(new_ab)
print(new_ab(2, 3))

线程安全

import time
import copy
from copy import deepcopy
from threading import Thread, get_ident class Foo(object):
pass f = Foo()
f.num = 0
local_dic = {}
# {
# get_ident():{f.num:1},
# get_ident():{f.num:2},
# get_ident():{f.num:3},
# } def add(i):
# print(get_ident())
# 极快解决阻塞问题,保证公共对象的安全性;但是浪费了很多内存,空间换时间
local_dic[get_ident()] = deepcopy(f)
local_dic[get_ident()].num = i
f.num = i
time.sleep(1)
print(local_dic[get_ident()].num) for i in range(20):
# 多线程操作同一个对象, 出现线程不安全
task = Thread(target=add, args=(i,))
# add(i)
task.start()

线程安全 local

import time
from threading import Thread, local # 继承local 解决线程安全问题,还不浪费资源
class Foo(local):
pass f = Foo()
f.num = 0 def add(i):
f.num = i
time.sleep(1)
print(f.num) for i in range(20):
# 多线程操作同一个对象, 出现线程不安全
task = Thread(target=add, args=(i,))
# add(i)
task.start()

请求上下文 阅读源码

# 请求是如何到达Flask应用的
from werkzeug.wrappers import Request, Response
from werkzeug import run_simple @Request.application
def app(env):
print(env, type(env))
return Response("200 ok") # 函数+()运行 run_simple("127.0.0.1", 5000, app)

Flask 进阶的更多相关文章

  1. Flask进阶

    Threading.local 作用:为每个线程创建一个独立的空间,使得线程对自己的空间中的数据进行操作(数据隔离). 应用: flask上下文管理中的local中比这更高级,为协程. DBUtils ...

  2. Flask 进阶session和上下文管理解析

    session的源码流程 将session放置在redis中 安装 pip install flask-session 使用 import redis from flask import Flask, ...

  3. Flask 进阶二

    flask中的路由系统: endpoint:反向url地址,默认为视图函数名(url_for). from flask import Flask,url_for app = Flask(__name_ ...

  4. Flask的Context(上下文)学习笔记

    上下文是一种属性的有序序列,为驻留在环境内的对象定义环境.在对象的激活过程中创建上下文,对象被配置为要求某些自动服务,如同步.事务.实时激活.安全性等等. 比如在计算机中,相对于进程而言,上下文就是进 ...

  5. Flask:文件配置方式实践及其中的各种问题记录

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2, 提示: 1.请查看本文后面的“18-07-17  11:18重大纠正” ! 2.flask run命令运行时传入参数 ...

  6. Flask入门系列(转载)

    一.入门系列: Flask入门系列(一)–Hello World 项目开发中,经常要写一些小系统来辅助,比如监控系统,配置系统等等.用传统的Java写,太笨重了,连PHP都嫌麻烦.一直在寻找一个轻量级 ...

  7. Django和Flask相对总结目录

    Django中文文档官网:https://yiyibooks.cn/xx/Django_1.11.6/index.html Flask中文文档官网:https://dormousehole.readt ...

  8. python复习目录

    目录 一.计算机基础 二.python 2.1初始python 2.1 python基础1 2.2 python基础2 三.函数 3.1 函数进阶 3.2 函数之装饰器 3.3 递归函数之二分查找 3 ...

  9. flask 电子邮件进阶实践-用模板发送163邮件

    电子邮件进阶实践 下面来学习构建邮件的HTML正文,并使用模板组织内容. 一封电子邮件的正文可以是纯文本(text/plain),也可以是HTML格式的文本(text/html).处于全面的考虑,一封 ...

随机推荐

  1. Xmanager PowerSuite 6企业版详细安装破解教程,解决评估过期问题(附注册机,全网独家可用),非学校/家庭免费版

    title: "Xmanager PowerSuite 6企业版详细安装破解教程,解决评估过期问题(附注册机,全网独家可用),非学校/家庭免费版" categories: soft ...

  2. 946. Validate Stack Sequences

    946. Validate Stack Sequences class Solution { public: bool validateStackSequences(vector<int> ...

  3. [原]globalmapper设置高程配色(globalmapper自定义配色方案)

    1.使用的globalmapper版本:1.8以上(之前的版本也应该支持) 2.将全球DEM加载进去 (零时找的小DEM  全球7级) 3.右击此处,选择“高程图例选项” 4.选择 配置-着色器选项 ...

  4. IntelliJ IDEA 安装使用 FindBugs 代码分析详述

    1 下载 2 重启idea 选中文件,右键 附:一些常见的错误信息 Bad practice 代码中的一些坏习惯 Class names should start with an upper case ...

  5. jQuery TE

    jQuery TE http://jqueryte.com/about ABOUT jQuery TE is a jQuery plugin. It is a lightweight (19.5 KB ...

  6. python |elasticsearchs操作es的例子

    from elasticsearch import Elasticsearch import json import time es = Elasticsearch(['es地址:9200'],ign ...

  7. 关于Flink slot 和kafka topic 分区关系的说明

    今天又有小伙伴在群里问 slot 和 kafka topic 分区(以下topic,默认为 kafka 的 topic )的关系,大概回答了一下,这里整理一份 首先必须明确的是,Flink Task ...

  8. [ ceph ] CEPH 部署完整版(CentOS 7 + luminous)

    1. 前言 拜读了 胖哥的(el7+jewel)完整部署 受益匪浅,目前 CEPH 已经更新到 M 版本,配置方面或多或少都有了变动,本博文就做一个 ceph luminous 版本完整的配置安装. ...

  9. go中值传递、引用传递、指针传递的区别

    go语言中的值类型: int.float.bool.array.sturct等 值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数 声明一个值类 ...

  10. codesmith设置mysql的连接字符串

    .net core,codesmith连不上 server=192.168.3.240;Initial Catalog=tpmdb;User=root;Password=root .net frame ...