Python基础学习 -- 同步与异步操作

简介: Python基础学习 -- 同步与异步操作

一、普通的子线程创建

1、导入需要的库文件

from multiprocessing import Process

2、创建一个普通函数,输出5遍相同的内容

def funa():
    for i in range(5):
        print("我是子线程")

3、在主线程调用普通函数(子线程)

if __name__=="__main__":
    print("我是主线程")
    p=Process(target=funa)
    p.start()
    print("主线程结束")

4、运行结果

我是主线程
主线程结束
我是子线程
我是子线程
我是子线程
我是子线程
我是子线程

二、子线程如何传递参数

1、创建一个带有参数的函数

def funa(n):
    for i in range(n):
        print("我是子线程")

2、主线程调用带有参数的函数,在Process函数中传递参数,一个参数后面需要加一个逗号,否则就不是元组格式

if __name__=="__main__":
    print("我是主线程")
    p=Process(target=funa,args=(5,))
    p.start()
    print("主线程结束")

3、运行结果

我是主线程
主线程结束
我是子线程
我是子线程
我是子线程
我是子线程
我是子线程

三、同步与异步对比

1、创建一个花费时间的程序,传入几相当于让程序睡几秒

def funa(n):
    for i in range(n):
        time.sleep(1)
        print("我是a")

2、在程序运行时,获取一个时间戳time.time(),等运行结束再生成一个时间戳,减去开始生成的时间戳,就可以得到程序运行的时间。

if __name__=="__main__":
    print("我是主线程")
    s=time.time()
    a=[2,3,4]
    for i in a:
        funa(i)
    print("程序花费:",time.time()-s)

3、运行结果,大概花费了6秒

我是主线程
我是a
我是a
我是a
我是a
我是a
我是a
我是a
我是a
我是a
程序花费: 9.004536867141724

4、异步实现

def funa(n):
    for i in range(n):
        time.sleep(1)
        print("我是a")
if __name__=="__main__":
    print("我是主线程")
    s=time.time()
    a=[2,3,4]
    b=[] #存储创建好的进程
    for i in a:
        p=Process(target=funa,args=(i,))
        b.append(p)
        p.start()
    for pp in b:
        pp.join()#pp执行完join操作,主程序才结束
    print("程序花费:",time.time()-s)

5、运行结果

我是主线程
我是a
我是a
我是a
我是a
我是a
我是a
我是a
我是a
我是a
程序花费: 4.339980602264404
目录
相关文章
|
10天前
|
开发框架 并行计算 算法
揭秘Python并发神器:IO密集型与CPU密集型任务的异步革命,你竟还傻傻分不清?
揭秘Python并发神器:IO密集型与CPU密集型任务的异步革命,你竟还傻傻分不清?
27 4
|
10天前
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
在快速发展的Web开发领域,高性能与高效响应是衡量应用质量的重要标准。随着Python在Web开发中的广泛应用,如何利用Python的协程(Coroutine)与异步函数(Async Functions)特性来优化Web应用的性能,成为了许多开发者关注的焦点。本文将从实战角度出发,通过具体案例展示如何运用这些技术来提升Web应用的响应速度和吞吐量。
13 1
|
10天前
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
在Python异步编程领域,协程与异步函数成为处理并发任务的关键工具。协程(微线程)比操作系统线程更轻量级,通过`async def`定义并在遇到`await`表达式时暂停执行。异步函数利用`await`实现任务间的切换。事件循环作为异步编程的核心,负责调度任务;`asyncio`库提供了事件循环的管理。Future对象则优雅地处理异步结果。掌握这些概念,可使代码更高效、简洁且易于维护。
11 1
|
11天前
|
Java Python
python之异步
python之异步
|
12天前
|
算法 Java 程序员
解锁Python高效之道:并发与异步在IO与CPU密集型任务中的精准打击策略!
在数据驱动时代,高效处理大规模数据和高并发请求至关重要。Python凭借其优雅的语法和强大的库支持,成为开发者首选。本文将介绍Python中的并发与异步编程,涵盖并发与异步的基本概念、IO密集型任务的并发策略、CPU密集型任务的并发策略以及异步IO的应用。通过具体示例,展示如何使用`concurrent.futures`、`asyncio`和`multiprocessing`等库提升程序性能,帮助开发者构建高效、可扩展的应用程序。
27 0
|
2月前
|
程序员 测试技术 开发工具
豆瓣评分7.9!世界级讲师耗时5年整理出的Python学习手册!
Python是一门流行的开源编程语言,广泛用于各个领域的独立程序与脚本化应用中。它不仅免费、可移植、功能强大,同时相对简单,而且使用起来充满乐趣。从软件业界的任意一角到来的程序员,都会发现Python着眼于开发者的生产效率以及软件质量,因此无论你的项目是大还是小,选择Python都将带来战略性的优势。 今天给小伙伴们分享的这份手册讲述了完整的Python语言,力争满足“语言”和“原理”两个方面的需求,并拥有足够的深度以便实用。废话不多说,下面展示给大家。
|
2月前
|
数据采集 数据可视化 Ruby
GitHub星标破万!Python学习教程(超详细),真的太强了!
Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。 Python 的设计哲学之一就是简单易学,体现在两个方面: 1. 语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。 2. 切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
|
2月前
|
算法 数据挖掘 大数据
深入学习Python的性能优化
【8月更文挑战第9天】深入学习Python性能优化涵盖设定明确目标、运用timeit与cProfile等工具诊断瓶颈、优化代码结构与算法、采用并行/并发技术、利用生成器与第三方库等策略。这是一个持续学习的过程,旨在全面提升代码效率与响应速度。
31 1
|
2月前
|
存储 JSON 测试技术
Python中最值得学习的第三方JSON库
Python中最值得学习的第三方JSON库
|
2月前
|
数据采集 数据挖掘 数据处理
解锁Python数据分析新技能!Pandas实战学习,让你的数据处理能力瞬间飙升!
【8月更文挑战第22天】Python中的Pandas库简化了数据分析工作。本文通过分析一个金融公司的投资数据文件“investment_data.csv”,介绍了Pandas的基础及高级功能。首先读取并检查数据,包括显示前几行、列名、形状和数据类型。随后进行数据清洗,移除缺失值与重复项。接着转换日期格式,并计算投资收益。最后通过分组计算平均投资回报率,展示了Pandas在数据处理与分析中的强大能力。
37 0
下一篇
无影云桌面