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核心编程学习记录之多线程编程
随机推荐
- eclipse几种常见问题的解决
build项目时出现卡死现象的解决方案 场景:在使用使用Eclipse编辑文件保存时或者build项目时,经常出现卡死现象,此时即便杀死eclipse进程重启还是依然出现这种现象. 原因:eclips ...
- Python开发【模块】:aiohttp(二)
AIOHTTP 1.文件上传 ① 单个文件上传 服务端 async def post(self, request): reader = await request.multipart() # /!\ ...
- python摸爬滚打之day05----字典
1.字典介绍 1.1 结构: {key1: value1, key2: value2, ....} ,由很多键值对构成. 在字典的key-value(键值对)中, key(键)必须是可哈希(不可变 ...
- TZOJ 5640: 数据结构实验:仓库管理
描述 某百货公司仓库中有一批电视机,按其价格严格从低到高的次序,以链表(链表含头结点)的形式存储于计算机中,链表的每个结点表示同样价格的电视机台数.现在又有m台价格为x元的电视机准备入库,请将其加入到 ...
- 认识程序的执行:从高级语言到二进制,以java为例
java 高级编程语言,面向对象*.java是源码文件*.class是字节码文件,一种中间文件. JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的 ...
- wc 统计命令
[root@localhost ~]# wc /etc/passwd // 统计行数.单词数.字符数 /etc/passwd [root@localhost ~]# wc -l /etc/passwd ...
- linux下修改/etc/profile文件
inux下修改/etc/profile文件 2017年01月06日 14:30:12 白昙 阅读数:8540 标签: linux 更多 个人分类: linux 通常情况下,/etc/profile ...
- Python3学习之路~2.9 字符编码与转码
详细文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net/strings ...
- ES6语法 promise用法
ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ...
- 亚马逊IOT-SDK,线程池数
1111