python - 当装饰器遇到multiprocessing, 出了点bug.

查看:195
本文介绍了python - 当装饰器遇到multiprocessing, 出了点bug.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

from multiprocessing import Pool

def with_app_context(need_new=False):
    def magic(func):
        app_store = {}
        def wrapper(*args, **kwargs):
            print 'inside', args, kwargs
            result = func(*args, **kwargs)
            return result

        return wrapper

    return magic


@with_app_context(need_new=True)
def func(k1, k2):
    print k1, k2
    return 'ret'


pool = Pool(processes=1)
pool.apply_async(func, args=('hi', 'yo'))
pool.close()
pool.join()

什么结果都不输出, 请问哪有bug?

解决方案

似乎是这个原因,函数装饰器不可pickle
可以看看这个:
装饰器与多进程以及Pickle

这篇关于python - 当装饰器遇到multiprocessing, 出了点bug.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆