您的位置:首页 > 文旅 > 美景 > 厦门软件开发培训机构_企业微信管理客户_黑科技推广软件_想学手艺在哪里可以培训

厦门软件开发培训机构_企业微信管理客户_黑科技推广软件_想学手艺在哪里可以培训

2025/2/22 14:44:57 来源:https://blog.csdn.net/qq_29491663/article/details/145093451  浏览:    关键词:厦门软件开发培训机构_企业微信管理客户_黑科技推广软件_想学手艺在哪里可以培训
厦门软件开发培训机构_企业微信管理客户_黑科技推广软件_想学手艺在哪里可以培训

python并发编程有一下几种

  • 多进程
  • 多线程
  • 异步
  • 协程

首先,进程是计算机中程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。多进程编程允许同时运行多个进程,每个进程都有自己独立的内存空间等资源。

multiprocessing

Python 的multiprocessing模块提供了创建和管理进程的功能,multiprocessing模块允许你通过创建Process对象来启动新的进程,这些进程在操作系统层面是独立运行的,每个进程都有自己独立的内存空间,因此它们之间的数据不会相互干扰。示例如下

import multiprocessingdef print_numbers():for i in range(10):print(i)def print_letters():for letter in 'abcdefghij':print(letter)process1 = multiprocessing.Process(target=print_numbers)
process2 = multiprocessing.Process(target=print_letters)process1.start()
process2.start()process1.join()
process2.join()

ProcessPoolExecutor

oncurrent.futures模块提供了一个高级接口用于异步执行可调用对象。ProcessPoolExecutor是其中用于多进程执行任务的类。它可以方便地将任务提交到进程池中,并以异步方式获取结果。它隐藏了很多底层的细节,如进程的创建、管理和结果的收集等,使得代码更加简洁和易于理解。

import concurrent.futures
import timedef fibonacci(n):if n <= 1:return na, b = 0, 1for _ in range(2, n + 1):a, b = b, a + breturn bnumbers = [10, 20, 30, 40, 50]
with concurrent.futures.ProcessPoolExecutor() as executor:start_time = time.time()results = list(executor.map(fibonacci, numbers))end_time = time.time()print("Results:", results)print("Time taken:", end_time - start_time)

celery

celery是一个强大的分布式任务队列框架,它基于消息传递实现任务的异步执行和分布式处理。在多进程场景下,celery可以将任务分配到多个工作进程(worker)中进行处理。它由三部分组成:任务生产者(producer)、消息中间件(broker)和任务执行者(worker)。任务生产者将任务发送到消息中间件,消息中间件将任务分发给空闲的任务执行者进行处理。

# 定义一个简单的任务
from celery import Celeryapp = Celery('tasks', broker='amqp://guest:guest@localhost:5672//')@app.task
def add(x, y):return x + y# 调用任务
from tasks import addresult = add.delay(3, 4)
print(result.get())

配置好后,调用命令启动celery

celery -A tasks worker --loglevel=info

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com