【发布时间】:2021-07-06 08:48:16
【问题描述】:
我正在尝试使用 twint 从 twitter 获取数据帖子,为了使其更快,我正在使用多处理来并行获取所有用户的所有数据。 出于某种原因,我总是收到错误:
cannot pickle '_thread.lock' object
我找不到解决方法。我尝试使用“线程”,但由于某种原因,它没有给我完整的数据,而且每次都给我不同的结果。
谢谢!
for 循环比创建这样的进程:
p1 = multiprocessing.Process(target=my_func, args=(current_user, collection, posts_list,))
proc.append(p1)
p1.start()
在 for 循环之后为每个进程“加入”执行操作。
【问题讨论】:
-
我猜你有一个对象锁定了你正在传递你用
multiprocessing创建的进程,你不能这样做。您不能将任何内容传递给进程(因为它使用pickle来序列化它们)。也许发布您正在使用的代码,以便更清楚您在做什么 -
我很难发布代码,因为它非常笨拙。我正在发送一个函数三个变量,函数的目标是返回每个用户和用户的所有帖子 - 所有帖子都将进入一个列表。
-
你可能在
current_user/collection/posts_list里面的某个地方有一些lock -
这是什么意思?我该如何解决?
标签: python multithreading python-multiprocessing