(澳门威尼斯人官网) 当装饰器遇到multiprocessing, 出了点bug.
澳门威尼斯人官网
澳门威尼斯人官网
当前位置 : 澳门威尼斯人官网 > 澳门威尼斯人官网

(澳门威尼斯人官网) 当装饰器遇到multiprocessing, 出了点bug.

from multiprocessing import Pool

def with_app_contextneed_new=False:
    def magicfunc:
        app_store = {}
        def wrapper*args, **kwargs:
            print inside, args, kwargs
            result = func*args, **kwargs
            return result

        return wrapper

    return magic


@with_app_contextneed_new=True
def funck1, k2:
    print k1, k2
    return ret


pool = Poolprocesses=1
pool.apply_asyncfunc, args=hi, yo
pool.close
pool.join

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

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

我已经找到原因了:

Traceback most recent call last:
  File "wrapper.py", line 30, in <module>
    print ret.get
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 567, in get
    raise self._value
cPickle.PicklingError: Cant pickle <type function>: attribute lookup __builtin__.function failed

子进程异常.

广告位

澳门威尼斯人官网