DJango
Django教程环境搭建安装虚拟环境123456789101112# 安装虚拟环境pip3 install virtualenv# 安装虚拟环境拓展包pip3 install virtualenvwrapper# 用户home目录下的.bashrc文件的末端添加如下两行export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 # 导入python3应用程序的路径export WORKON_HOME=$HOME/.virtualenvssource /usr/local/bin/virtualenvwrapper.sh # 使用virtual的虚拟环境时需要导入该脚本# 文件修改完成后,将.bashrc配置文件导入到环境中去source .bashrc
创建虚拟环境1234567891011121314151617# 创建虚拟环境mkvirtualenv 虚拟环境名# 创建python3的虚拟环境mkvirtualenv -p python3 虚拟环境名# 进入虚拟环境工作workon 虚拟环境名# 查看机器上有多少虚拟环境workon + ...
csv文件读写
CSV文件读写CSV读取源码12345import csvdata = csv.reader(open('devin.csv', 'r'))for i in data: print(i)
执行结果12['devin', 'devin2', 'devin3']['devin', 'devin2', 'devin3']
[!NOTE]
csv、reader
CSV写入源码1234567import csvstu = ["devin","devin2","devin3"]out = open("devin.csv", 'a', newline="")csv_writer = csv.writer(out, dialect='excel')csv_writer.wr ...
GIL锁
GIL锁知识点Python GIL的概念
GIL:全局解释器,同一个进程中的每个线程在执行的过程都需要现获取GIL,保证在同一个时刻只有一个线程可以执行代码。
python程序与GIL本身无关,仅仅是因为历史原因构建了cpython解释器导致,如果要在cpython中移除GIL,会很难。
GIL对Python的影响
线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前可以暂时释放GIL,但在执行完毕后,必须重新获取GIL python3.x使用计时器(执行时间达到阈值后,当前线程释放GIL)或者python2.x tickets计数达到100。
在利用cpython解释器时,使用多进程是可以利用多核的cpu资源的。或者利用其它python解释器就没有这个问题,或者可以利用第三方语言(如c)来实现多线程就可以解决该问题。
多线程运行时是会比单线程性能有所提升的,因为遇到IO阻塞时会自动释放GIL锁。
补充知识
c语言在linux中的编译
1234# 将.c文件编译为可执行文件gcc xxx.c# 将.c文件编译为动态库文件(可被其它程序调用)gcc xxx. ...
Pycharm使用记录
Pycharm使用知识点快捷键123456789Shift + F9:调试Shift + F10:执行F8:主程序调试的下一步F7:子函数调试的下一步F9:取消单步调试,直接执行后续的代码Ctrl + F2:取消调试Ctrl + /:注释选中的代码块Ctrl + q:查看调用函数注释内容Ctrl + Shift + F10:直接执行当下所在窗口的脚本
初始化设置1231. 进入用户所在的家目录2. 关闭pycharm程序2. 删除.pycharmxxx.x文件夹即可
项目文件解读
设置项目解释器:【File】–>【Setting】–>【Project:***】–>【Project Interpreter】
设置字体和样式:【File】–>【Setting】–>【Editor】
Ubuntu软件安装
将要安装的软件下载下来,解压出来,通过tar命令解压
将解压的软件目录移动到/opt目录下
1/opt目录存放给主机额外安装的软件,为了便于其它用户使用
切换目录至已解压目录的bin文件夹下
然后启动程序
1./软件名称.sh
创建桌面图标,在上一步 ...
tcp知识点
知识点发送数据
设计思路:
代码展示:
1234567891011121314151617181920import socketdef send_message(): # 创建监听的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 链接服务器 server_addr = ('192.168.85.129', 8080) tcp_socket.connect(server_addr) # 发送信息给服务器 message = 'Test message' tcp_socket.send(message.encode('utf-8')) # 接受对方发送过来的数据,最大接受1024个字节 recv_message = tcp_socket.recv(1024) print(recv_message.decode('utf-8')) # 关闭套 ...
UDP知识点
知识点发送数据123456789101112131415import socket# 生成一个套接字对象udp_socket = socket.socket(soket.AF_INET, socket.SOCK_DGRAM)# 发送过程中可以绑定端口,不绑定的化则由操作系统随机提供# 第一个''中填写IP,必须是自己的IP, 第二个参数填写的是端口号udp_socket.bind('', 8080)# 利用sendto方法向目标机器发送消息,它传递的第一个参数必须是bytes类型,第二个参数为目标机器的IP、端口元组target_addr = ("192.168.43.108", 8080)udp_socket.sendto(b'hahaha', target_addr) # 也可以使用encode进行编码发送内容,如下# udp_socket.sendto('发送的内容'.encode('utf-8'), target_addr)udp_scoket.close( ...
XML文件读写
XML文件读写背景
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
实例
1234567891011121314151617181920<bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> ...
eval知识
eval函数备注:会将字符串中的内容当成有效的表达式执行,并返回结果
1234# 千万不可以将任何用户的输入用eval来使用eval("合理的python内容")# 在输入框中输入"__import__(os).system("touch file")"可以调用系统的命令