【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
深入 Python 套接字编程:高级特性与并发处理
【5月更文挑战第18天】本文探讨了Python套接字编程的高级特性,包括非阻塞套接字、超时设置和端口复用,以及并发处理方法:多线程、多进程和异步I/O(如`asyncio`)。通过示例展示了多线程服务器如何处理客户端连接。同时强调并发处理时需注意资源竞争和同步,并合理配置线程数。学习这些技能将有助于构建高效、灵活的网络应用,应对不断发展的技术挑战。
19 10
|
2天前
|
Java 测试技术 Python
Python的多线程允许在同一进程中并发执行任务
【5月更文挑战第17天】Python的多线程允许在同一进程中并发执行任务。示例1展示了创建5个线程打印"Hello World",每个线程调用同一函数并使用`join()`等待所有线程完成。示例2使用`ThreadPoolExecutor`下载网页,创建线程池处理多个URL,打印出每个网页的大小。Python多线程还可用于线程间通信和同步,如使用Queue和Lock。
16 1
|
3天前
|
数据处理 Python
Python并发编程:实现高效的多线程与多进程
Python作为一种高级编程语言,提供了强大的并发编程能力,通过多线程和多进程技术,可以实现程序的并发执行,提升系统的性能和响应速度。本文将介绍Python中多线程和多进程的基本概念,以及如何利用它们实现高效的并发编程,解决实际开发中的并发性问题。
|
4天前
|
监控 Python
python过滤指定进程
python过滤指定进程
15 1
|
4天前
|
运维 监控 Ubuntu
Python实现ubuntu系统进程内存监控
Python实现ubuntu系统进程内存监控
17 1
|
4天前
|
开发者 Python
在Python中查询进程信息的实用指南
在Python中查询进程信息的实用指南
10 2
|
4天前
|
消息中间件 Linux 调度
Python的进程锁,进程队列
Python的进程锁,进程队列
123 3
|
4天前
|
数据采集 监控 调度
Python的进程,以及进程同步,守护进程详细解读
Python的进程,以及进程同步,守护进程详细解读
141 4
|
4天前
|
调度 Python 容器
【python】-详解进程与线程
【python】-详解进程与线程
|
4天前
|
运维 监控 Unix
第十五章 Python多进程与多线程
第十五章 Python多进程与多线程