【python】多进程并发异步调用

简介: 【python】多进程并发异步调用

号外号外!本号已对接机器人,需要三连的小伙伴请关注我,自动回复的哈!

目前支持:
# Csdn自动回复机器人
# 20230405
####被动模式####
# 支持点赞、收藏回访
# 关注回访(对方至少有一条博客的记录)
# 评论回访
####主动模式####
# 私信检测到群发消息自动三连/满足模板设定给予三连触发
####bug优化及更新####
# 优化检测模式,防止出现多触发情况
# 为了防止操作额度不够,只处理最新发表的博客(第一条),不在继续往下操作
# 暂未对动态blink进行调整,理论可以
# 评论多评检测(防止有人故意而为之)
#热榜评论
#接下来自动发表博客(对接chatgpt)

正文

在python中,如何使函数调用各自运行,不互相影响,例如下面代码:

import time
def A():
    for i in range(1,100):
        print(i)
        time.sleep(1)
    print("a function")
def B():
    for i in range(100, 120):
        print(i)
        time.sleep(2)
    print("b function")
A()
B()

对于线程并发这一块我也搞不清楚,问了百度不好使,最后问了gpt

要让两个函数互不影响地运行,可以使用 Python 的 multiprocessing模块。这个模块可以让你在不同的进程中运行函数,从而实现并行计算。

以下是如何使用 multiprocessing 模块重写你的代码:

import time
import multiprocessing
def A():
    for i in range(1,100):
        print(i)
        time.sleep(1)
    print("a function")
def B():
    for i in range(100, 120):
        print(i)
        time.sleep(2)
    print("b function")
if __name__ == '__main__':
    p1 = multiprocessing.Process(target=A)
    p2 = multiprocessing.Process(target=B)
    p1.start()
    p2.start()
    p1.join()
    p2.join()

这里我们将函数 A 和 B 分别放到两个不同的进程中运行,并且使用 start() 方法启动这两个进程。join() 方法则会等待进程执行完毕后再继续执行后续的代码。使用 if name == ‘main’: 判断语句可以保证在 Windows 操作系统下运行多进程代码时不会出现异常。

虽然 Python 也支持多线程编程,但是在 Python 中使用多线程并不能充分发挥多核 CPU

的计算能力,因为由于全局解释器锁(Global Interpreter Lock,GIL)的存在,同一时间只能有一个线程在解释 Python

代码。而使用多进程则可以充分利用多核 CPU 的计算能力,因为每个进程都有自己的 Python 解释器和独立的内存空间,进程之间不会受到

GIL 的限制。因此,在需要充分利用多核 CPU 的情况下,使用多进程并发是更好的选择。

需要注意的是,使用多进程会产生额外的开销,因为每个进程都需要分配独立的内存空间和 Python

解释器。因此,在需要大量计算的情况下,使用多进程并发可以获得更好的性能表现,但是在处理 IO

密集型任务时,多进程并发的开销可能会超过性能提升的收益。在这种情况下,使用异步编程模型(例如 asyncio)可能更适合。

相关文章
|
1月前
|
监控 并行计算 数据处理
构建高效Python应用:并发与异步编程的实战秘籍,IO与CPU密集型任务一网打尽!
在Python编程的征途中,面对日益增长的性能需求,如何构建高效的应用成为了每位开发者必须面对的课题。并发与异步编程作为提升程序性能的两大法宝,在处理IO密集型与CPU密集型任务时展现出了巨大的潜力。今天,我们将深入探讨这些技术的最佳实践,助你打造高效Python应用。
36 0
|
2天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
10 2
|
10天前
|
数据库 开发者 Python
“Python异步编程革命:如何从编程新手蜕变为并发大师,掌握未来技术的制胜法宝”
【10月更文挑战第25天】介绍了Python异步编程的基础和高级技巧。文章从同步与异步编程的区别入手,逐步讲解了如何使用`asyncio`库和`async`/`await`关键字进行异步编程。通过对比传统多线程,展示了异步编程在I/O密集型任务中的优势,并提供了最佳实践建议。
16 1
|
11天前
|
调度 iOS开发 MacOS
python多进程一文够了!!!
本文介绍了高效编程中的多任务原理及其在Python中的实现。主要内容包括多任务的概念、单核和多核CPU的多任务实现、并发与并行的区别、多任务的实现方式(多进程、多线程、协程等)。详细讲解了进程的概念、使用方法、全局变量在多个子进程中的共享问题、启动大量子进程的方法、进程间通信(队列、字典、列表共享)、生产者消费者模型的实现,以及一个实际案例——抓取斗图网站的图片。通过这些内容,读者可以深入理解多任务编程的原理和实践技巧。
33 1
|
18天前
|
Python
Python中的多线程与多进程
本文将探讨Python中多线程和多进程的基本概念、使用场景以及实现方式。通过对比分析,我们将了解何时使用多线程或多进程更为合适,并提供一些实用的代码示例来帮助读者更好地理解这两种并发编程技术。
|
1月前
|
数据挖掘 程序员 调度
探索Python的并发编程:线程与进程的实战应用
【10月更文挑战第4天】 本文深入探讨了Python中实现并发编程的两种主要方式——线程和进程,通过对比分析它们的特点、适用场景以及在实际编程中的应用,为读者提供清晰的指导。同时,文章还介绍了一些高级并发模型如协程,并给出了性能优化的建议。
29 3
|
1月前
|
中间件 API 调度
深入探究 Python 异步编程:利用 asyncio 和 aiohttp 构建高效并发应用
深入探究 Python 异步编程:利用 asyncio 和 aiohttp 构建高效并发应用
25 4
|
1月前
|
中间件 API 调度
深入探究 Python 异步编程:利用 asyncio 和 aiohttp 构建高效并发应用 精选
深入探究 Python 异步编程:利用 asyncio 和 aiohttp 构建高效并发应用 精选
25 2
|
1月前
|
开发框架 并行计算 .NET
脑洞大开!Python并发与异步编程的哲学思考:IO密集型与CPU密集型任务的智慧选择!
脑洞大开!Python并发与异步编程的哲学思考:IO密集型与CPU密集型任务的智慧选择!
28 1
|
28天前
|
存储 Python
Python中的多进程通信实践指南
Python中的多进程通信实践指南
15 0
下一篇
无影云桌面