python中的异步与同步

异步: 多任务, 多个任务之间执行没有先后顺序,可以同时运行,执行的先后顺序不会有什么影响,存在的多条运行主线

 

同步: 多任务, 多个任务之间执行的时候要求有先后顺序,必须一个先执行完成之后,另一个才能继续执行, 只有一个主线

 

阻塞:从调用者的角度出发,如果在调用的时候,被卡住,不能再继续向下运行,需要等待,就说是阻塞

 

非阻塞: 从调用者的角度出发, 如果在调用的时候,没有被卡住,能够继续向下运行,无需等待,就说是非阻塞

 

同步 阻塞

 

异步 非阻塞

 

from multiprocessing import Pool

import time

import os

 

def water():

    """烧水"""

    print("子进程 pid=%d" % os.getpid())

    for i in range(5):

        print("正在烧水中")

        time.sleep(0.5)

    return "水烧开了"

 

defhandle_water(message):

    """接收烧开水的信息"""

    print("进程pid=%d 收到了异步任务的结束信息: %s" % (os.getpid(), message))

 

pool = Pool(3)

 

print("主进程 pid=%d" % os.getpid())

for i in range(3):

    print("打游戏")

    time.sleep(0.5)

 

                        # 回调

pool.apply_async(water,callback=handle_water)  # 异步添加任务

 

for i in range(20):

    print("打游戏")

    time.sleep(0.5)

 

pool.close()

pool.join()

 

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

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

相关文章

C语言指针祥讲

前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根…

编程挑战(6)

组合算法:开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标代表的数被选中,为0则没有选中。 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数;然后从左到右扫描数组元素值的“…

[编程启蒙游戏] 2. 奇偶数

文章目录1. 游戏前提2. 游戏目的3. python代码1. 游戏前提 孩子知道奇偶数是什么,不知道也没关系 还可以采用掰手指演示,伸出两个手指能配对,所有伸出来的手指都两两配对了,伸出来的手指个数就是偶数如果还有1个没有找到朋友的手…

进程间通信-Queue 消息队列 先进先出

Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。 multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序 初始化Queue()对象时(例如:qQueue()),若括号中没…

过压保护(1)

征一个简单、可靠的电源过压保护电路 http://www.amobbs.com/thread-5542005-1-1.html 防过压:过压之后TVS导通,电流由正极流经自恢复保险再流经TVS到负极,自恢复保险升温,阻值变大,相当于断开,等电流撤去&…

spring boot+thmyleaf ModelAndView页面传值

如上图所示,当我们从后台通过ModelAndView进行传值的时候, 一定要注意,千万不要向上图那样开头加上反斜杠,开头加反斜杠,系统会默认为相对路径, 虽然也能找到相应的视图(html)&#…

python中的进程, 线程

进程是操作系统分配资源的最小单位 线程是操作系统调度执行的最小单位 定义的不同 进程是系统进行资源分配的最小单位. 线程是进程的一个实体,是CPU进行调度的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(…

LeetCode 214. 最短回文串(字符串哈希)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。 找到并返回可以用这种方式转换的最短回文串。 示例 1: 输入: "aacecaaa" 输出: "aaacecaaa"示例 2: 输入: "abcd" 输出: "…

转:c#委托事件实现窗体传值通信

C#实现Winform窗口间数据交互的三种方法介绍 2010-03-15 来自:CNBLOG 字体大小:【大 中 小】摘要:本文分别介绍C#实现Winform窗口间数据交互的三种方法:修改子窗体的构造函数、给窗体添加属性或方法、通过委托的方法&#xff0c…

python中的多线程-threading

python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用 创建多线程: from threading import Thread import time def sing(): for i in range(3): print("唱歌") time.sleep(…

LeetCode 1566. 重复至少 K 次且长度为 M 的模式

文章目录1. 题目2. 解题1. 题目 给你一个正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式。 模式 是由一个或多个值组成的子数组(连续的子序列),连续 重复多次但 不重叠 。 模式由其长度和重复次数定义。 …

R语言的安装与配置

一、什么是 R 语言 R 编程语言被广泛应用在统计科学和商业领域。 在各种编程语言排名中 R 语言的排名都很靠前。 它是一款集成了数据操作、统计,以及可视化功能的优秀开源软件。免费,开源是 R 重要的特点。 二、什么是 RStudio RStudio 是用亍 R 编程的…

python中的多线程-共享全局变量

在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好) 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全) …

R语言第一讲

一、R语言入门推荐 推荐四本材料书:R CookBook :hhtp://www.cookbook-r.com/R in Action http://www.amazon.com/R-Action-Robert-Kabaccoff/dp/1935182390Ggplot2:Elegant Graphics for Data Analysis(User R):hhtp://www.amazon.com/ggplo…

LeetCode 1567. 乘积为正数的最长子数组长度

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度。 示例 1: 输入:nums [1,-2,-…

python中的互斥锁

如果没有控制多个线程对同一资源的访问,对数据造成破坏,使得线程运行的结果不可预期。这种现象称为“线程不安全”。 线程同步解决问题: 系统调用t1,然后获取到num的值为0,此时上一把锁,即不允许其他现在操作num 对nu…

R语言第二讲

1、R语言包的概念 R提供了大量开箱即用的功能,但它最激动人心的一部分功能是通过可选模块的下载和安装 来实现的。目前有2500多个①称为包(package)的用户贡献模块可从 http://cran.r-project.org/ web/packages 下载。这些包提供了横跨各种…

LeetCode 1568. 使陆地分离的最少天数(DFS)

文章目录1. 题目2. 解题1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid ,其中 0 表示水,而 1 表示陆地。 岛屿由水平方向或竖直方向上相邻的 1 (陆地)连接形成。 如果 恰好只有一座岛屿 ,则认为陆地是 连通的 &…

python中的非阻塞使用互斥锁

锁定方法acquire可以有一个blocking参数。 如果设定blocking为True,则当前线程会堵塞,直到获取到这个锁为止(如果没有指定,那么默认为True) 如果设定blocking为False,则当前线程不会堵塞 from threading im…

在XML文件中定义动画(1)

① 打开Eclipse&#xff0c;新建Android工程② 在res目录中新建anim文件夹③ 在anim目录中新建一个myanim.xml(注意文件名小写)④ 加入XML的动画代码 <?xml version"1.0" encoding"utf-8"?><set xmlns:android"http://schemas.android…