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核心编程学习记录之多线程编程
随机推荐
- 如何在Pycharm中配置Python和Django(环境搭建篇)
一.准备好以下必备条件,并且按照先后顺序进行安装: Python 3.6 (64-bit).或Python27(64-bit) Django-1.11.tar.gz pycharm 开发工具 安装好了 ...
- 去除字符串中的html代码
public static String Html2Text(String inputString) { String htmlStr = inputString; // 含html标签的字符串 St ...
- inet超级服务器和守护进程
inetd是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求.它可以为多种服务管理连接,当 inetd接到连接时,它能够确定连接所需的程序,启动相应的进程,并把 socke ...
- 浏览器的cookie的值改成字典格式
首先我们把复制的cookie的值赋给b >>> cookies = 'bid=Qzw9cKnyESM; ll="108288"; __yadk_uid=4YChv ...
- python-面向对象-04_面向对象封装案例
面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...
- 如何将文章列表用<li>分两列显示
我们平时用ul或ol标签来罗列文章列表时默认是一列,为了美观起见,想把它们两列显示要如何操作呢?怎么用css定义它们? 其实相对比较简单,用几行css样式定义一下就够了,可以用div + css来控制 ...
- kafka2 简单介绍
kafka是JMS的一种实现 JMS(java message service):middle ware,中间件技术.Queue:队列模式,P2P,点对点.publish-subscribe:主题模式 ...
- ntldr is missing
开机时出现“ntldr is missing,这是因为引导文件丢失了,或者系统找不到引导文件,下面教解决方式. 1.u盘pe启动盘. 2.win03PE2013增强版. 3.pe系统桌面,点击“win ...
- SQL Anywhere .NET
SQL Anywhere .NET 支持 1.ADO.NET 是 Microsoft 的 ODBC.OLE DB 和 ADO 系列中最新的数据访问 API.它是 Microsoft .NET Fram ...
- 进程间通信IPC机制和生产者消费者模型
1.由于进程之间内存隔离,那么要修改共享数据时可以利用IPC机制 我们利用队列去处理相应数据 #管道 #队列=管道+锁 from multiprocessing import Queue # q=Qu ...