Contents

在之前写的爬取搜索引擎之搜狗中写的,预制SNUID的实战中,因为要爬的数据太多,预制SNUID比较慢,所以做成了多线程的模式。

但是当运行时候发现报错。TypeError: can’t pickle _thread.lock objects

stackoverflow上给出的解释是这样的

1
2
3
You need to change from queue import Queue to from multiprocessing import Queue.

The root reason is the former Queue is designed for threading module Queue while the latter is for multiprocessing.Process module.

代码修改为:

1
2
3
import queue   改为   from multiprocessing import Queue

q = queue.Queue() 改为 q = Queue()

OK、其他代码不用做任何改变。异步去给队列里面添加SNUID。然后爬虫继续爬取信息。

Contents