Python 第四阶段 学习记录之----多线程
多线程
多线程例子, 注释部份即为多线程的使用
#-*- coding: utf-8 -*-
# Wind clear raise
# 2017/3/5 下午2:34 import socket
import threading
import time
import queue, json
import hashlib def list(conn):
conn.send(b"list")
recv_data_size = conn.recv(1024)
conn.send(b"OK")
recv_data_size = int(recv_data_size.decode())
recv_size = 0
res = b''
while recv_size < recv_data_size:
data = conn.recv(1024)
res += data
recv_size += len(data) print(res.decode()) def run(username, password, i):
client = socket.socket()
client.connect(('localhost', 9999))
sha = hashlib.sha256()
sha.update(password.encode())
data = {"account_id": username, "password": sha.hexdigest()}
# 服务器只返回一次
client.send(json.dumps(data).encode())
res = client.recv(1024)
if res != b'Fail':
print("登录成功. 服务器返回:", res.decode(), threading.current_thread(), i)
# list(client) else:
print("密码错误")
client.close() def run2(name, paswd, i):
print(i, threading.current_thread()) if __name__ == "__main__":
# start_time = time.time()
# d = ["alex", 'alex2', "user01"]
# obj_t = []
# for i in range(1000):
# # for name in d:
# # run(name, "123")
# t = threading.Thread(target=run, args=("alex", "123", i))
# # obj_t.append(t)
# t.start()
#
# # for t in obj_t:
# # t.start()
# # for t in obj_t:
# # t.join()
#
# print("end: ", time.time() - start_time)
client = socket.socket()
client.connect(('localhost', 9999))
client.send(b'hello')
print(client.recv(1024))
线程之间通信:queue
import queue # q = queue.Queue() # 先进先出
q = queue.LifoQueue() # 后进先出 q.put(1)
q.put(2)
q.put(3)
q.put(4)
print(q.get())
print(q.get())
print(q.get())
print(q.get()) q = queue.PriorityQueue()
q.put((-1, ""))
q.put((10, ""))
q.put((5, "")) print(q.get())
print(q.get())
print(q.get())
print(q.get())
Python 第四阶段 学习记录之----多线程的更多相关文章
- python 第四阶段 学习记录之----异步
异步: 知识情况: 1.多线程, 多线程使用场景 1.IO操作不占CPU,读写数据(网络中.系统中) 2.计算占CPU, 3.上下文切换不占CPU.它消耗资源 python多线程 不适合CPU密集型的 ...
- Python 第五阶段 学习记录之---Django 基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- Python 第八阶段 学习记录之---算法
算法(Algorithm): 一个计算过程, 解决问题的方法 1.递归的两个特点 - 调用自身 - 结束条件 时间复杂度 - 时间复杂度是用来估计算法运行时间的一个式子(单位) - 一般来说,时间复杂 ...
- Python 第五阶段 学习记录之---Django 进阶
Model 一.创建表 1.基本结构 字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bi ...
- Python 第五阶段 学习记录之--- Web框架
什么是web服务器的原理是什么 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env pyt ...
- Python 第五阶段 学习记录之----ORM
ORM: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了 ...
- Python 第五阶段 学习记录之----rabbmit
消息服务器rabbmit RabbitMQ 消息队列 python里有两个Q, threading queue.不同线程间数据交互 进程Queue: 不同进程间交互这个说法是错误的. 这个是用于父进程 ...
- 《码出高效:Java开发手册》第四章学习记录,内容想当的多,前后花了几天的时间才整理好。
<码出高效:Java开发手册>第四章学习记录,内容想当的多,前后花了几天的时间才整理好. https://naotu.baidu.com/file/e667435a4638cbaa15eb ...
- python核心编程学习记录之多线程编程
随机推荐
- axure rp pro 8.0 注册码
激活码:(亲测可用) 用户名:aaa 注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7FkVPIn8oG3uphlOeytIajxGU 用户名:axureuse ...
- OC转场动画UIViewControllerTransitioningDelegate
该项目一共两个界面,第一个的只有一个SystemAnimationViewController只有UICollecitonView,第二个界面ImgDetailViewController只有一个UI ...
- jmeter测试文件上传接口报错:connection reset by peer: socket write error
最近在对文件上传接口性能测试时,设置150线程数并发时,总会出现以下错误:connection reset by peer: socket write error 在网上搜索了一下,得到的原因有这些: ...
- tortoiseSVN版本合并(merge)
原文地址:http://blog.163.com/qq371557620@yeah/blog/static/8428365820172110320574/ 编码过程中,我们经常会遇到需要多个分支并行开 ...
- abap中结构体嵌套结构体。
1: 结构体中嵌套结构体. *&---------------------------------------------------------------------* *& Re ...
- sap gui 配置
1: sap gui 安全配置 ,在左下角搜索sap gui configuration.
- css3--之backface-visibility
使用CSS3 backface-visibility属性制作翻转动画效果: http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201504151 ...
- MongoDB--预备
- express-generator 自动生成服务器基本文件
(1) 安装 express-generator 构建工具 npm install -g express-generator 在命令行中用 npm 在全局安装 express-generator 脚手 ...
- mvc中文件上传下载
//控制器 public ActionResult FileUpLoad(HttpPostedFileBase f1) { string path = Server.MapPath("~/P ...