欢迎各位兄弟 发布技术文章
这里的技术是共享的
最近通过廖雪峰的官网开始学习python http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832973658c7... python环境为2.7.8 学到分布式进程这一节运行服务端代码出现错误 PicklingError: Can't pickle <function <lambda> at 0x02747DB0>: it's not found as __main__.<lambda> 具体代码如下,大家也可以点击那个链接去查看
全部错误信息如下
该代码在ubuntu python2.6.x上运行正常 请各位老手帮忙看下,谢谢! | ||||||
| #1 得分:0 回复于: 2014-08-25 09:15:50 自己先顶顶。。。 |
3 2 3
| #2 得分:0 回复于: 2014-08-25 09:19:38
# 把两个Queue都注册到网络上, callable参数关联了Queue对象: QueueManager.register( 'get_task_queue' , Queue.Queue()) QueueManager.register( 'get_result_queue' , lambda : Queue.Queue()) 1. 试过教程中的代码吗? 2. 为什么做这个改动? 改动时参考register函数的文档了吗? | ||
| #3 得分:0 回复于: 2014-08-25 09:24:03 非常感谢,这里我之前是按照教程上面代码写的,但发生错误后,我就试着改动了一下 贴代码时,忘了改回来,实在不好意思 但出错信息是一样的 这里原始代码应该是:
| ||||
| #4 得分:0 回复于: 2014-08-25 12:15:28 又没人了,,,, 自己再顶下。。。。 |
#5 得分:10 回复于: 2014-08-25 13:48:51 没有windows环境linux下直接运行脚本正常,那个错误看描述应该是在你的主脚本里没找到lambda表达式,看了下源码报这个错的代码是
你找到你的pickle.py文件修改下,把 __import__(module) mod = sys.modules[module] klass = getattr(mod, name) 这3行代码复制到try上面一行,保存然后运行你自己的脚本看看到底是哪一行报错,修改之前记得先备份哦 | |||
| #6 得分:0 回复于: 2014-08-25 17:20:49 非常感谢 在你的指点下,我修改pickle.py代码如下
再次运行 出现错误
| ||||
#7 得分:0 回复于: 2014-08-25 17:53:09 错误很明显,在__import__(module) 这行之上加一句
在你自己的脚本里加如下两个函数
再把
替换为
如果还报找不到属性的错误,就看下开始加的print dir(module) 这句打印出来的信息判断下moudule到底是哪个模块 | |||||||||
#8 得分:0 回复于: 2014-08-25 17:57:09 打错了 print dir(module) 改为 print dir(mod),mod.__file__ | |
#9 得分:0 回复于: 2014-08-25 17:58:11 加在mod = sys.modules[module] 这行之后 | |
| #10 得分:0 回复于: 2014-08-26 09:08:54 非常感谢你的耐心解答,根据你的方法修改后,现在没有出现找不到属性错误 但还是在manager.start()时出现了另外一个错误,如下:
这个是不是还是在做pickle时发生的问题呢? | ||
#11 得分:0 回复于: 2014-08-26 13:48:03 像是pickle dump时不完整造成的,可能是多线程问题,put任务时加个锁试试 | |
| #12 得分:0 回复于: 2014-08-27 09:18:53 像是pickle dump时不完整造成的,可能是多线程问题,put任务时加个锁试试 我把下面那一段全去了 只保留到 [code=python ]# 绑定端口5000, 设置验证码'abc': manager = QueueManager(address=('', 5000), authkey='abc') # 启动Queue: manager.start() [/code] 还是出现同样的错误 真郁闷
今天学习解析XML 导包的时候竟然都出发问题了
错误如下:
不知道为什么。。。。。 太郁闷了 | ||||||
2 | #13 得分:10 回复于: 2014-08-27 09:28:44 这个是python内置的library 为什么不看官网的教程呢 https://docs.python.org/2/library/multiprocessing.html?highlight=basemanager#multiprocessing.manager... |
| #14 得分:0 回复于: 2014-08-27 12:28:29 这个是python内置的library 为什么不看官网的教程呢 官网教程在实验过程中发现一个问题
这两段代码如果在同一台机器上运行会发生 下面这个错误
初学这个,请见谅,再次感谢! | ||||||
2 | #15 得分:0 回复于: 2014-08-27 12:34:11 'foo.bar.org', 50000 你本机有这个Domain吗 换句话说 你ping这个'foo.bar.org' 地址 能到本机? |
| #16 得分:0 回复于: 2014-08-27 12:37:20 'foo.bar.org', 50000 这个Domain我已改成本机IP地址了 上面的代码是直接复制官网教程的,没有改过来,不好意思 |
| #17 得分:0 回复于: 2014-08-27 12:41:17 'foo.bar.org', 50000 代码如下
| ||||
2 | #18 得分:0 回复于: 2014-08-27 14:05:33 把你的代码粘贴复制 又运行 没出现你说的问题 |
| #19 得分:0 回复于: 2014-08-27 14:57:38 把你的代码粘贴复制 又运行 没出现你说的问题 我用Python IDLE运行的,两个代码都在一个shell里运行时发生了这个错误 开多个shell 时 运行正常,再次感谢! |