python并发编程4-线程

进程的出现

 

原来一台服务器只能执行一个任务。

进程的出现,可以让一台服务器处理多个任务。多个任务间进行切换,记录每个任务当前执行到哪里,记录有哪些数据。然后进行切换

每个进程区分开每个任务所能占有的内存空间

进程的缺点

线程的出现:

进程就是为了隔离内存出现的。操作系统在调度进程,

进程切换所需要的资源很大

线程切换几乎不浪费资源

车间切换和人操作机器的切换所需要的人力物力都不一样,线程的切换开销非常小

进程和线程的关系

 线程的特点:

 使用线程的例子

 

线程的启动方法一:

 

线程的启动方法二(使用面向对象的方式):

过程分析:

同一个进程中的多个线程可能在不同cpu上运行

全局解释器锁:(对线程加锁)

数据加锁

GIL锁的切换

多线程实现qq聊天:

server端:

import socket
from threading import Threaddef func(conn):while True:conn.send(b'hello')msg = conn.recv(1024).decode('utf-8')if msg=='q':conn.close()breakprint(msg)info = input('>>>').encode('utf-8')conn.send(info)conn.close()sk=socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()while True:conn, addr = sk.accept()t=Thread(target=func,args=(conn,)).start()
sk.close()# 子进程中不能用input
# 子线程可以
# def demo(n):
#     inp=input('%s:'%n)
#     print(inp)
# for i in range(5):
#     t=Thread(target=demo,args=('name%s'%i,))

client端:
 

import socket
sk=socket.socket()
sk.connect(('127.0.0.1',8080))info=sk.recv(1024)
print(info)
msg=input('>>>').encode('utf-8')
sk.send(msg)
sk.close()

运行结果:

线程中的其他方法:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Fiddler篇】FreeHttp无限篡改http报文数据调试和mock服务

目录 引言 FreeHttp起源 FreeHttp 插件安装FreeHttp 基本界面一:规则匹配区 1.1:『get http sesion in left session list』获取Session信息1.2:『select url filter method』Url匹配方式1.3:『edit advanced http filter』高级匹…

echarts实现双Y轴之散点和折线图

代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title></title><script src"echarts.js"></script> </head><body><div id"box" st…

Pytest装饰器@pytest.mark.parametrize一键生成接口正交试验用例

我们在做接口测试时&#xff0c;有时会遇到涉及用例特别多的时候&#xff0c;每个用例都去手动调一遍&#xff0c;很费时费力&#xff0c;也是不现实的&#xff0c;这篇文章我们就解决下这种费时费力的情况. 一、业务需求 某所大学通信系共2个班级&#xff0c;刚考完某一门课…

python列表对应元素合并为列表及判断一个列表是几维

一、合并对应元素 1、两个列表合并 a[1,2,3,4,5] b[2,3,4,5,6] d[] for i in range(len(a)):c []c.append(a[i])c.append(b[i])d.append(c) print(d) 运行结果&#xff1a; 2、一个列表垂直合并 3、一个列表顺序合并 date[] date_temp1[1545225954.721;1545225955.115, …

Pytest脚本中运行用例方式

脚本树如下&#xff1a; test1文件下test_01.py存放test1和test2用例 test1文件下test_02.py存放test1和test2用例 test2文件下test_03.py存放test1和test2用例 test2文件下test_04.py存放test1和test2用例 1、运行所有用例 import pytest if __name__ "__main__&quo…

js 获取当前元素的父元素的父元素的id

情景一&#xff1a;用onclick触发的函数 html代码&#xff1a; <div id"0" style"border-bottom:1px solid #000;margin:0 auto;"><div>1111</div><div class"original"><div id"chartx1" class"cha…

Python Unittest参数化parameterized之数据驱动

一、parameterized介绍 之前我们写过 Unittest第三方库parameterized类似Unittest的DDT、Pytestpytest.mark.parametrize&#xff0c;可以实现参数化用户数据驱动&#xff0c;避免写多个方法&#xff08;冗余&#xff09; 二、安装 pip install parameterized 三、导入 …

echarts图使用tab和下拉切换

方法一&#xff1a;用tab建切换 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script type"text/javascript" src"jquery-1.12.4.min.js"></scr…

Pytest fixture之request传参

Pytest中我们经常会用到数据参数化&#xff0c;我们来介绍下装饰器pytest.fixture()配合request传参的使用 user request.param 如果想把登录操作放到前置操作里&#xff0c;也就是用到pytest.fixture装饰器&#xff0c;传参就用默认的request参数 user request.param 这一…

使用securecrt在本地与服务器之间上传下载数据

第一种方式&#xff1a; 1、首先安装&#xff1a;apt install lrzsz lrzsz是一款在Linux里可代替ftp上传和下载的程序。 2、设置上传和下载目录&#xff1a;选项--》会话选项--》X/Y/Zmodem 中设置上传和下载目录 3、上传和下载 上传文件只需在shel中输入命令"rz"…

Pytest自定义标记mark及特定运行方式

mark 标记 标记执行指定类 pytest.main([-s,文件名,-m标记名]) pytest.main([-s,test01.py,-mtest]) import pytest pytest.mark.test class Test(object):def test_01(self):print(test_01)def test_02(self):print(test_02) if __name____main__:#运行指定的类pytest.main…

【Python】Error:'int' object is not callable

python错误&#xff1a; TypeError: int object is not callable 经过百度&#xff0c;可能是 你正在调用一个不能被调用的变量或对象&#xff0c;具体表现就是你调用函数、变量的方式错误。 如&#xff1a; max0 a[1.1, 2.0, 3.0, 4.0, 5.0] maxmax(a) 所以在命名变量时一定…

Pytest跳过执行之@pytest.mark.skip()详解大全

一、skip介绍及运用 在我们自动化测试过程中&#xff0c;经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致的一些用例执行不了&#xff0c;这时我们就可以用到跳过skip用例&#xff0c;如果我们注释掉或删除掉&#xff0c;后面还要进行恢复操作。 1、skip跳过成…

python并发编程5-线程

一、复习 # 线程# 线程是进程中的执行单位# 线程是CPU调度的最小单位# 线程之间资源共享## 线程的开启和关闭以及切换的时间开销远远小于进程# 线程本身可以在同一时间使用多个CPU # threading# 使用方法类似于multiprocess # python与线程# CPython解释器在解释代码中容易产生…

Pytest标记用例失败之xfail

项目自动化测试中&#xff0c;如果接口2依赖接口1的响应结果值&#xff0c;或者用例2依赖用例1的响应结果值&#xff0c;自然需要与接口1或用例1进行关联&#xff0c;但是当接口1或用例1执行失败&#xff0c;接口2或用例2一定也是失败的&#xff0c;所以这时不必要再进行接口2和…

python并发编程6-协程

1、基础 # 进程 启动多个进程 进程之间是由操作系统&#xff08;时间片轮转&#xff09;负责调用 # 线程 启动多个线程 真正被CPU执行的最小单位是线程# 开启一个线程 创建一个线程 寄存器 堆栈# 关闭一个线程 等都需要时间 # 协程&#xff1a;本质上是一个线程# 能够在多个任…

JMeter之HTTP请求上传文件/上传图片

Jmeter实现接口上传图片 一、Fiddler抓包上传图片接口 查看WebForms&#xff0c;接口传参为空&#xff0c;文件/图片传参为<file>对用的Name值&#xff1a; Content-Disposition: form-data; name"file"; filename"IMG_20191116_110507.jpg" Con…

js关闭setInterval及终止ajax请求

用clearInterval&#xff08;&#xff09;即可搞定。亲测有效 $(document).ready(function(){c setInterval(checkIsExist,10000);//每10秒执行一次checkIsExist方法 }); function checkIsExist(){$.ajax({type: "POST",url: "/SecondServlet",data: &qu…

Jmeter吞吐量控制器详解

一、吞吐量控制器 吞吐量控制器(Throughput Controller)用来控制其下元件的执行次数&#xff0c;并无控制吞吐量的功能。 作用&#xff1a;控制其下的子节点的执行次数与负载比例分配 吞吐量控制器字段介绍&#xff1a; Total Executions&#xff1a;执行百分比&#xff08;…

Python递归通用接口响应深层提取

最近在做接口自动化断言时&#xff0c;每个接口文件里都写了一遍提取接口响应数据&#xff0c;然后append到列表里&#xff0c;传给公共的断言方法与sql查询出来的数据做比对&#xff0c;这样如果是100个接口&#xff0c;每个接口都写一遍接口响应数据提取&#xff0c;就要写10…