进程并发装饰器

简介: 进程并发装饰器

如何使用并发装饰器

# process wrapper
from utils import run_in_async_process
@run_in_async_process
def p():
  print(" i am son proc")

进程并发装饰器

给函数加上这个装饰器,就可以让他作为 独立的 子进程运行

# ************** Concurrent decorator
from multiprocessing import Process,Pipe
from eventlet import spawn,sleep
from functools import wraps
import traceback
def read_msg_from_son_proc(f_conn):
    while True:
        msg_poll = f_conn.poll()
        if msg_poll:
            msg = f_conn.recv()
            if msg :
                raise Exception(msg)
            break
        sleep(0.1)
# func: wrap ,func run in other proc ,
#        and read Except from son proc 
# 
# !!! if you want use it not in dead loop , 
#    please consider , wait for this func
# 
#  beacause this is a async wrapper
#  so it can't wait for return, it just can get Except in son process
def run_in_async_process(f):
    @wraps(f)
    def wrapper(*a,**ka):
        # must be have a conn to send message to father
        def wrap_f(*a,**ka):
            msg =  ""
            conn = ka.pop("conn")
            try:
                f(*a,**ka)
            except:
                msg = "{}\nsome error catch by son proc".format(traceback.format_exc())
            finally:
                conn.send( msg )
                exit(0)
        f_conn,s_conn = Pipe()
        ka.update({"conn":s_conn})
        p = Process(target=wrap_f,args= a , kwargs= ka  )
        p.start()
        x = spawn(read_msg_from_son_proc, f_conn)
        x.wait()
    return wrapper
# *********** end
相关文章
|
7月前
|
供应链 安全 数据处理
操作系统高级议题:并发控制与进程互斥技术
操作系统高级议题:并发控制与进程互斥技术
125 0
|
8月前
|
Shell
shell中并发执行多个进程
shell中并发执行多个进程
814 4
|
6月前
|
安全 Python
告别低效编程!Python线程与进程并发技术详解,让你的代码飞起来!
【7月更文挑战第9天】Python并发编程提升效率:**理解并发与并行,线程借助`threading`模块处理IO密集型任务,受限于GIL;进程用`multiprocessing`实现并行,绕过GIL限制。示例展示线程和进程创建及同步。选择合适模型,注意线程安全,利用多核,优化性能,实现高效并发编程。
81 3
|
6月前
|
Python
解锁Python并发新世界:线程与进程的并行艺术,让你的应用性能翻倍!
【7月更文挑战第9天】并发编程**是同时执行多个任务的技术,提升程序效率。Python的**threading**模块支持多线程,适合IO密集型任务,但受GIL限制。**multiprocessing**模块允许多进程并行,绕过GIL,适用于CPU密集型任务。例如,计算平方和,多线程版本使用`threading`分割工作并同步结果;多进程版本利用`multiprocessing.Pool`分块计算再合并。正确选择能优化应用性能。
41 1
|
4月前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。
|
5月前
|
算法 Java
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
该博客文章综合介绍了Java并发编程的基础知识,包括线程与进程的区别、并发与并行的概念、线程的生命周期状态、`sleep`与`wait`方法的差异、`Lock`接口及其实现类与`synchronized`关键字的对比,以及生产者和消费者问题的解决方案和使用`Condition`对象替代`synchronized`关键字的方法。
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
|
4月前
|
C语言
C语言 网络编程(八)并发的UDP服务端 以进程完成功能
这段代码展示了如何使用多进程处理 UDP 客户端和服务端通信。客户端通过发送登录请求与服务端建立连接,并与服务端新建的子进程进行数据交换。服务端则负责接收请求,验证登录信息,并创建子进程处理客户端的具体请求。子进程会创建一个新的套接字与客户端通信,实现数据收发功能。此方案有效利用了多进程的优势,提高了系统的并发处理能力。
|
4月前
|
数据采集 消息中间件 并行计算
进程、线程与协程:并发执行的三种重要概念与应用
进程、线程与协程:并发执行的三种重要概念与应用
86 0
|
5月前
|
存储 缓存 NoSQL
进程内缓存助你提高并发能力!
进程内缓存助你提高并发能力!