在跑廖雪峰的一段代码的时候出了两个问题,第一个问题,经过调研有解决方案,第二个是找到了问题的地方,但是没找到原因
问题1:
_pickle.PicklingError: Can't pickle <function <lambda> at 0x000002BAAEF12F28>: attribute lookup <lambda> on __main__ failed
代码如下:
import random
import time
import queue
from multiprocessing.managers import BaseManager
task_queue = queue.Queue()
result_queue = queue.Queue()
def re_task_queue():
global task_queue
return task_queue
def re_result_queue():
global result_queue
return result_queue
class QueueManager(BaseManager):
pass
if __name__ == '__main__':
QueueManager.register("get_task_queue", callable=lambda :task_queue)
QueueManager.register("get_result_queue", callable=lambda :result_queue)
manager = QueueManager(address=("127.0.0.1", 5000), authkey=b'abc')
manager.start()
task = manager.get_task_queue()
result = manager.get_result_queue()
for i in range(10):
n = random.randint(0, 10000)
print "Put task %d..." % n
task.put(n)
print "Try to get results..."
for i in range(10):
r = result.get(timeout=10)
print "Result: %d" % r
manager.shutdown()
print "Master exit."
报错信息:
Traceback (most recent call last):
File "C:/Users/v_wangweihong/Desktop/supervisor-easy-master/task_master.py", line 39, in <module>
manager.start()
File "C:\Us