Python 的 pickle 或者 shelve 库为什么不能 dump 一个 gevent 协程对象
时间: 2020-08-20来源:V2EX
前景提要
报错如下:
我进 pickle 库的源码看了,是用的 c 写的,所以代码被省略不可见了。 我网上搜了下,都没遇到我这个情况的(也可能我没找到),我试着把协程换成线程来 dump 也不行,线程报错是不能 dump 一个锁机制。
场景需求是这样的:
有个协程池,里面有多个协程对象在执行各自的任务(正在或者已完成),同时也有个 md5 映射表,表结构是{md5 值 1:gevent 协程对象 1,md5 值 2:gevent 协程对象 2,......}。
要能在这一堆协程对象里通过映射表找出正在执行的指定的某个协程对象,状态已完成的则不考虑,然后可以在它运行中途时能 kill 掉。
我本来打算用 pickle 库把这个 md5 表 dump 到数据库里,然后等需要结束某个协程对象时,再从数据库里 load 出来然后直接调用 kill 方法即可,结果就报上面的错。
希望各位大佬能指点小弟一二,我个人感觉关键点就在怎么从一堆携程对象识别出哪个是目标,md5 映射表是我自己加的,不是固定需求,如果有更好的方案那肯定更好,我洗耳恭听,小弟在此感谢各位大佬了。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行