Discuss / Python / callable = function,为什么用lambda生成的简易函数会报错?

callable = function,为什么用lambda生成的简易函数会报错?

Topic source

import random, time, queue from multiprocessing.managers import BaseManager

task_queue = queue.Queue() result_queue = queue.Queue()

class QueueManager(BaseManager): pass

if name == 'main':

# 把2个Queue都注册到网络上,callable参数关联了Queue对象:
QueueManager.register('get_task_queue', callable = lambda:task_queue)
QueueManager.register('get_result_queue', callable = lambda:result_queue)

lambda:task_queue,就是一个简易函数,并返回task_queue对象,和创建的普通函数有何区别,为什么这里不行?请各位指点

_swayer

#2 Created at ... [Delete] [Delete and Lock User]

lambda表达式没法pickle。 老师之前说过,父进程所有的Python对象都必须通过pickle序列化再传到子进程去

_swayer

#3 Created at ... [Delete] [Delete and Lock User]

应该是windows下lambda表达式没法pickle

官方文档里提到了lambda函数不可以被pickle,只有通过def定义的才行 https://docs.python.org/3/library/pickle.html#pickle-picklable


  • 1

Reply