首页 > 其他分享 >同步异步 阻塞非阻塞

同步异步 阻塞非阻塞

时间:2023-09-14 16:44:06浏览次数:32  
标签:__ 异步 同步 name 阻塞 进程 time print

同步异步描述的事任务的提交方式  描述的事一段代码或者函数

同步:任务提交后,原地等待任务的返回结果,等待的过程中不做任何事(干等)

程序层面上表现出来的感觉就是卡住了

例子:

import time

 

def func():

  time.sleep(3)

  print('hello world')

 

 

if __name++=='__main__':

  res=func() 

  print('hahaha')

异步:任务提交后,不原地等待任务的返回结果,直接去做其他事情

我提交的任务结果如何获取?

任务的返回结果有一个异步回调机制自动处理

 

阻塞非阻塞:描述的程序的运行状态

阻塞:阻塞态

非阻塞:就绪态、运行态

理想状态:我们应该让我们的写的代码永远处于就绪态和运行态之间切换

上述概念的组合:最高效的一种组合就是异步非阻塞

 

 

如何创建进程:

第一种:用这种的比较多

from multiprocessing import Process  是一个类,里面需要传:目标(要把谁当作进程来创建

import time

 

 

def task(name):

  print('%s is running'%name)

  time.slrrp(3)

  print('%s isover 'name)

if __name__=='__main__':

#1.创建一个对象

   p=Process(target=task,srgs=('iason',))  

#容器类型 里面无论有几个元素 建议一定要用逗号隔开 哪怕只有一个元素

#2.开启进程

p.start()#告诉操作系统帮我们常见一个进程     异步

print('主')

 

第二种:

from multiprocessing import Process

import time

 

class Myprocess(Process):

  def run(self):

    print('hello')

    time.sleep(3)

    print('zhuzhu')

if __name__=='__main__':

  p=Myprocess()

  p.start()

  print('主')

 

"""

windows操作系统下 创建进程一定要在main内创建

因为Windows下创建进程类似于模块导入的方式

会从上往下依次执行代码

Linux中则是直接将代码完整的拷贝一份

所以Windows下创建类似于双开一定要在 __name__=='__main__':后写

"""

总结:创建进程就是在内存中申请一块内存空间  将需要运行的代码丢进去

一个进程对应在内存中就是一块独立的内存空间

多个进程对应在内存中就是多个独立的内存空间

进程与进程之间数据默认情况下是无法直接交互的,如果想交互可以借助第三方工具、模块

 

join方法:

是让主进程的代码等待子代码运行结束之后再继续运行,不影响其他子进程的执行

例如:

 

from multiprocessing import Process  是一个类,里面需要传:目标(要把谁当作进程来创建

import time

 

 

def task(name):

  print('%s is running'%name)

  time.slrrp(3)

  print('%s isover 'name)

if __name__=='__main__':

#1.创建一个对象

  p=Process(target=task,srgs=('iason',))  

  p.start()#告诉操作系统帮我们创建一个进程     异步

  p.join()

  print('主')

 

标签:__,异步,同步,name,阻塞,进程,time,print
From: https://www.cnblogs.com/97zs/p/17702860.html

相关文章

  • C#中的异步编程和并发控制
    简介:欢迎来到C#语言入门指南的第十篇博客!在前几篇博客中,我们已经学习了C#的基本语法、面向对象编程、集合和异常处理等内容。今天,我们将进一步探讨两个重要的主题:异步编程和并发控制。这些主题对于处理多任务和提高程序性能至关重要。让我们深入了解吧!1.异步编程:异步编程是一种......
  • .Net Core 真异步假异步
    异步的回调通过以上介绍,我们一定要记住一个知识点:异步需要回调机制。异步操作之所以能在执行结果完成之后继续执行下面程序完全归功于回调,这也是所有异步场景的核心所在,前到js的异步回调,后到cpu内核空间copy数据到用户空间完成通知等等异步场景,回调无处不在。说道回调大部分语言......
  • 使用python进行数据同步,根据游标的方式
    使用python进行数据同步,根据游标的方式一、介绍:数据同步分为好几种,比如根据最大id排序,其次才是根据游标进行排序。为什么不使用最大id进行数据同步?如下:因为如果数据表中的数据是按照降序排序的,那么每次根据最大id取1000条数据的方式也是一种可行的分页查询方式。这种方式的优......
  • 在dva.js里面发送异步action
    在dva.js的effects里面不能使用setTimeout,会报错。得使用redux-saga的delay才行(注:dva.js内置了redux-saga)。如下,这样才能延时。 ......
  • 修改了虚拟机名称后,数据存储上的文件名称如何同步修改
    更改虚拟机名称虚拟机的名称在虚拟机所在的文件夹中必须是唯一的。如果将某虚拟机移至其他数据存储文件夹或移至具有相同名称的现有虚拟机的主机,则可以更改该虚拟机的名称以使其保持唯一。 更改某虚拟机的名称时,应更改 vCenterServer 清单中用于标识该虚拟机的名称。该操作......
  • 火狐浏览器的书签丢失了怎么办?书签同步失败怎么办?
    参考:http://mzl.la/1BAQULj 您对Firefox做的所有更改,比如您的主页、工具栏、扩展、保存的密码以及书签等,都被保存在一个特别的文件夹中,称为用户配置文件夹。您的用户配置文件夹和Firefox的程序文件并不在一起,这样一旦Firefox出现问题,您的所有信息仍旧是安全的。也就是说,......
  • Terraform 状态不同步处理
    背景在使用Terraform创建TencentCloudTKE的时候,手贱把nodepool删掉了。导致执行destroy,plan都会报错。│Error:[TencentCloudSDKError]Code=InternalError.UnexpectedInternal,Message=relatednodepoolqueryerr(getnodepoolfailed:[E501001DBRecordNotFou......
  • buildroot 构建根文件系统(8)添加网络时间同步
    一、开发背景构建最小系统后成功运行后,时间都是从初始化时间开始计算,形如:ThuJan 109:57:55UTC1970二、开发需求开机联网后自动从网络中获取最新的时间,同步到系统中三、开发环境LinuxUbuntu4.15.0-65-generic+buildroot-2023.02.3+i.mx6d(cortex-A9)......
  • Java多线程____BlockingQueue阻塞队列使用
    packagecom.frame.base.thread;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.ArrayBlockingQueue;/***并发编程____阻塞队列*/publicclassBlockingQueueTest{ publicstaticvoidmain(String[]args)throwsInterruptedException{......
  • 3.2 DLL注入:远程APC异步注入
    APC(AsynchronousProcedureCall)异步过程调用是一种Windows操作系统的核心机制,它允许在进程上下文中执行用户定义的函数,而无需创建线程或等待OS执行完成。该机制适用于一些频繁的、短暂的或非常细微的操作,例如改变线程优先级或通知线程处理任务。在APC机制中,当某些事件发生时(例如......