python线程、协程,了解一下

Python进程、线程、协程 每个进程都有各自的一块独立的内存,保证进程彼此间的内存地址空间的隔离。这种任务虽然也可以用多任务完成,但是当任务过多时(超过cpu的核数),花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。:涉及到网络、磁盘IO的任务都是IO密集型任务,比如网络传输、数据库等调用、爬虫等,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(存在阻塞),99%的时间花费在IO上(因为IO的速度远远低于CPU和内存的速度)。 阅读详情

定义一个线程

import os
import  time,threading,multiprocessing

def thread_run():
    print(threading.get_ident(),'ident')
    print(os.getpid() , '=pid ')
    print(os.getppid(), '=ppid')

def run (name):
    time.sleep(2)
    print('hello',name)
    t = threading.Thread(target=thread_run,)
    t.start()

if __name__ == '__main__':
    for i in range(10):
        #args  是一个list
        #开启多线程
        p = multiprocessing.Process(target=run,args=('liu',))
        p.start()

再定义一个线程

import threading
import os
class A(threading.Thread):
    def __init__(self,s):
        self.s = s
        threading.Thread.__init__(self)

    def run(self):
        for i in range(111):
            print(self.s,threading.current_thread(),i,os.getppid(),os.getpid())


t1 = A('apple')
t1.start()

定义一个协程

'''
异步io
协程
微线程
用户态的的轻量级线程
拥有自己的寄存器上下文和栈
能保留上次的调用状态

无需上下文切换的开销
无需原子操作锁定及同步
高并发
高扩展
低成本

无法利用CPU多核资源

单线程内实现高并发的操作


执行多个方法
遇到io操作进行切换

'''

from greenlet import greenlet
import os

# 封装好的协程



def run():
    print('runing')
    print(os.getppid())
    g2.switch()  #切换到run2
    print(os.getpid())
    g2.switch()

def run2():
    print('run2ing')
    print(os.getppid())
    g1.switch()
    print(os.getppid())
    print('end')

g1 = greenlet(run)
g2 = greenlet(run2)

g1.switch()  #进行切换

#遇到io 自动切换

Python 进程、线程、协程 进程和线程 在爬虫开发中,进程和线程的概念非常重要的,提高爬虫的工作效率,打造分布式爬虫,都离不开进程和线程的身影。本节将从多进程、多线程、协程三个方面,帮组大家回顾 Python 语言中进程和线程的常用操作,以便在接下来的爬虫开发中灵活运用进程和线程。 多进程 Python 实现多进程的方式主要有两种,一种方法是使用 os 模块中的 fork 方法,另一种方法是使用 multiprocessing 模块。这两种方法的区别在于前者仅使用 Unix/Linux 操作系统,对 Windows 不支持,后者则是跨 阅读详情

相关推荐

python进程、线程、协程详解

Python中的进程、线程、协程 1、概念 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务。 一个CPU,在一个时间切片里只能运行一个程序。 进程 进程:是CPU对程序的一次执行过程、一次执行任务。各个进程有自己的内存空间、数据栈等。 线程 线程:是进程中执行运算的最小单位,是进程中的一个实体。 协程 协程:比线程更小的执行单元,又称微线程,在单线程上执行多个任务,用函数切换,...

LDC,公众号【轻松学编程】 861

用Python实例带你了解进程、线程和协程

用Python实例带你了解进程、线程和协程前言前提条件相关介绍实验环境进程多进程用进程池对多进程进行操作线程使用_thread模块实现使用 threading 模块实现协程使用asyncio模块实现小结 前言 本文用Python实例阐述了一些关于进程、线程和协程的概念,由于水平有限,难免出现错漏,敬请批评改正。 前提条件 熟悉Python基本语法 熟悉Python操作进程、线程、协程的相关库 相关介绍 Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和

FriendshipTang的博客 953

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

python-了解进程,线程,协程

python-进程,线程,协程初步了解

qq_41121485的博客 250

从USB 2.0到USB 3.x:Synopsys SVT USB VIP配置避坑与接口选择指南

本文详细解析了从USB 2.0到USB 3.x的Synopsys SVT USB VIP配置要点,涵盖协议版本选择、物理接口匹配及UVM层次化架构实现。重点介绍了layering sequence的配置技巧和常见问题解决方案,帮助验证工程师高效避坑并优化验证流程。

weixin_42653691的博客 238

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权难度简单偏上对于低权限shell获取涉及:ssti漏洞对于提权:pkexec提权。

2202_75361164的博客 633

python 多线程和协程结合_进程、线程和协程了解吗

本文从操作系统原理出发结合代码实践讲解了以下内容:什么是进程,线程和协程?它们之间的关系是什么?为什么说Python中的多线程是伪多线程?不同的应用场景该如何选择技术方案?...什么是进程进程-操作系统提供的抽象概念,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。程序本身是没有生命周期的,它只是存在磁盘上的一些指令,程序一...

weixin_39930557的博客 124

SAP Script表单开发中ABAP preform方法的实战应用与调试技巧

本文深入探讨了在SAP Script表单开发中调用ABAP程序(preform方法)的实战应用与调试技巧。通过一个获取供应商版本名称的实例,详细讲解了如何在SE71中嵌入PERFORM指令、编写ABAP子程序进行数据查询与处理,并重点介绍了使用SAP Script Debugger进行高效调试的方法,帮助开发者灵活扩展表单功能,实现复杂业务逻辑。

o0p1q2r3的博客 551

快速了解python协程与线程

摘要:线程由操作系统内核调度,切换开销大但可多核并行,适合CPU密集型任务;协程由用户态自行管理,切换开销极小但无法多核并行,适合高并发IO密集型任务。Python中线程受GIL限制,CPU密集型推荐多进程,而协程通过async/await实现,适用于大量网络请求等场景。示例显示线程使用threading模块,协程则通过asyncio实现,后者在IO操作时性能更优。

2601_96523548的博客 240

三极管稳压电路仿真分析

Z1的负极连接到三极管的基极,三极管发射极E是输出,形成了一个射极跟随器,也就是说,E极的电压随着B电压变化而变化,但BE之间有一个压降,一般硅管0.7V左右,假设B极是6.7V,那E极就是6.7-0.7=6V,所以就有一个公式VOUT=Vz-Vbe,可以根据VOUT来选择合适的稳压管。从稳压管的SPEC中我们可以看到,Vz@Izt这个参数,指在Izt=20mA时,稳压管的稳压值Vz=5.1V,也就是说流过稳压管的电流在20mA以上,稳压效果最佳。三极管导通之后,E点电压会升高,当升高到Vbe。

U_YAO的博客 2325

Linux 使用rm -rf /*命令后,恢复系统方法

Linux 使用rm -rf /*命令后,恢复系统方法 个人学习记录 这里实验环境采用的是radhel7.1的版本: 个人认为核心就是缺失什么组件,就从别的地方复制什么组件过来,先把系统拉起来,再慢慢恢复配置 进入救援模式 1、将/dev/sda两个分区分别挂载看看,里面的内容,有内容的就是根存在的分区 2、ifconfig eno16777777 192.168.8.2 3、从另外一台一样系统的根 。用 tar打包,一个个文件夹拷贝过来 4、到坏系统,scp另外一个系统的etc.tar.gz 5

weixin_43603476的博客 1万+

通俗的来了解下python中的进程,线程和协程的关系和他们的区别

先来说说他们的定义 进程 进程是系统资源分配的最小单位 一个正在运行的程序比如QQ,微信等就是一个线程 进程之间的内存都是独立的,不能共享变量 运行的开销也特别大 线程 线程是系统调度的最小单位 同一个进程下的线程资源是共享的 运行的开销较少 协程 协程在单线程下实现并发效果 协程遇IO自动切换 协程保留上一次调用状态 运行的开销小 进程,线程和协程间的关系的通俗描述 现在有一家工厂想要生产某个商品: 1、现在他要开一条流水线去生产这批商品,这时候这条为了生产商品而产生的流水线可以称之为进程 !

qq_45632139的博客 263

软件测试方法——等价类划分法详解

!如果下面这些资料用得到的话可以直接拿走:1、自学开发或者测试必备的完整项目源码与环境2、测试工作中所有模板(测试计划、测试用例、测试报告等)3、软件测试经典面试题4、Python/Java自动化测试实战.pdf5、Jmeter/postman接口测试全套视频获取6、Python学习路线图。

MXB1220的博客 1万+

python——进程线程、与协程基础概述

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。什么是进程?   进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。前面的话我也没懂,用非官方的白话来解释就是——执行中的程序是进程,比如qq不是进程,但是当我们双击qq开始使用它

LAINCLAK的博客 854

【教程4>第1章>第12节】通过Verilog读取txt格式数据进行测试并将结果导入到matlab

我们在verilog的testbench中,调用txt文件,将上述正弦样本数据作为测试激励输入到verilog模块中。通过这个方法,可以将一些较为复杂的数据导入到verilog中,进行FPGA数据处理模块的开发。即通过w方式打开一个新的txt文件,然后将verilog的输出保存到XY1.txt文件中。这个部分是txt文件的路径,实际使用时,修改为您自己的路径,或者将txt文件放在和我一样的路径中。这个是数据长度,matlab产生的txt多少长度,这个参数就修改为多少长度。这个txt就是保存这段数据的文件。

FPGA/MATLAB学习教程/源码/项目合作开发 1378

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3121

协程\线程\进程各自用法及优缺点

asyncio。

weixin_45808678的博客 1045

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python 线程、协程简单使用

python简单线程并发示例:import threading import timemutex = threading.Lock()def worker(num): time.sleep(1) mutex.acquire() print "this is ",num mutex.release()if __name__ == '__main__': for

wwhhff11 421

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python开发多进程、多线程以及协程是什么?项目是否用?

项目是否用?其实多,多进程,在实际开发中用到的很少,进程:一个运行的程序(代码)就是一个进程,没有运行的代码叫程序;线程:调度执行的最小单位,也叫执行路径;协程:是一种用户态的轻量级线程,协程的调度完全由用户控制。

yy1715713348的博客 174

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python---进程、线程、协程 概述

1、进程:进程是系统进行资源分配和调度的一个独立单位 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。 2、线程:CPU调度和分派的基本单位 线程是进程的...

lonely2018的博客 266

【python】python进程、线程、协程和什么时候使用

说明 进程:是操作系统进行资源分配的最小单元,资源包括CPU、内存、磁盘等IO设备等等 线程:是CPU调度的基本单位。 进程:系统分配资源的载体,是程序运行的实例; 线程:程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程中有多个线程。 为什么有人说 Python 多线程是鸡肋? 在我们常识中,多进程、多线程都是通过并发的方式充分利用硬件资源提高程序的运行效率,怎...

我的笔记本 9000

python理解进程、线程和协程

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34404393的博客 126

python中的进程、线程、协程,它们的区别和联系

1.进程的定义: 进程是系统进行资源分配和调度的一个独立单位。 2.线程的定义: 线程是进程的一个实体,是CPU调度和分派的基本单位,线程是比进程更小的能够独立运行的单位 3.协程的定义: 协程则是程序级别的由程序根据需要自己调度。 在一个线程中会有很多函数,我们把这些函数称为子程序,在子程序执行过程中可以中断去执行别的子程序,而别的子程序也可以中断回来继续执行之前的子程序,这个过程就称为协程。...

梓栋DREM 4664

Python线程进程协程

Python线程进程协程 所讲内容: 多任务的介绍 多任务的概念 线程(重点) 线程(注意点) 多线程-共享全局变量(重点) 多线程-共享全局变量-问题 同步 互斥锁 案例:多任务版udp聊天器 进程以及状态 进程的创建-multiprocessing 进程、线程对比 进程间通信-Queue 进程池Pool 应用:文件夹copy器(多进程版) 生成器 协程-yield 协程-greenlet 协程...

weixin_44217401的博客 1170
上一篇: 《python学习手册》第四版,了解一下
下一篇: http头信息,了解一下
go_sparrow
博客等级 码龄11年 25粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值