进程并发装饰器

简介: 进程并发装饰器

如何使用并发装饰器

# 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
相关文章
|
2天前
|
Shell
shell中并发执行多个进程
shell中并发执行多个进程
104 4
|
6月前
|
监控 Linux 调度
【CSAPP】进程 | 上下文切换 | 用户视角下的并发进程
【CSAPP】进程 | 上下文切换 | 用户视角下的并发进程
39 0
|
7月前
|
并行计算 安全 Java
深入理解Java并发编程:并行与并发、进程与线程、优先级、休眠与让步
深入理解Java并发编程:并行与并发、进程与线程、优先级、休眠与让步
263 0
|
2天前
|
监控 安全 Java
一文讲明白Java中线程与进程、并发与并行、同步与异步
一文讲明白Java中线程与进程、并发与并行、同步与异步
8 1
|
6月前
|
存储 算法 Linux
【看表情包学Linux】进程优先级 | 查看系统进程 | 优先级修改 | 进程的切换 | 竞争性与独立性 | 并行并发的概念 | 环境变量
【看表情包学Linux】进程优先级 | 查看系统进程 | 优先级修改 | 进程的切换 | 竞争性与独立性 | 并行并发的概念 | 环境变量
61 0
|
2天前
|
存储 调度
进程的奥德赛:并发世界中的核心概念与动态管理
进程的奥德赛:并发世界中的核心概念与动态管理
40 2
|
7月前
|
存储 算法 Linux
【Linux】进程优先级|进程并发概念|在vim中批量化注释
【Linux】进程优先级|进程并发概念|在vim中批量化注释
|
7月前
|
并行计算 机器人 Python
【python】多进程并发异步调用
【python】多进程并发异步调用
|
8月前
|
存储 编译器 调度
观察进程的并发性
通过创建子进程,观察父子进程的并发执行过程 ,加深对操作系统进程概念和进程并发特性的理解
63 0