python多线程问题请教

xfyanmeng 2020-01-27 06:09:34
我的任务分两步,先用spider来抓取url,抓取结束后将获得的数据jsondata及insert_into_mysql方法加入线程池,写入数据这一步没有执行,新手求指教,谢谢!

if __name__ == "__main__":
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(max_workers=10)
for url in urls:
executor.submit(spider, url)

def spider(id):
#网络请求数据jsondata
executor.submit(insert_into_mysql, jsondata) #将写入数据库的方法及获取到的数据加入线程池

def insert_into_mysql(jsondata):
print("写入数据")
#将jsondata写入数据库
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
放风喽 2020-01-28
  • 打赏
  • 举报
回复
我的意思是
executor这个调用方式不好
换成yield试试

yield insert_into_mysql(jsondata)

executor这个东西好像是POOL模块的条用多线程的方式
我没用过
xfyanmeng 2020-01-27
  • 打赏
  • 举报
回复
引用 1 楼 天不绝我 的回复:
调用写入函数的方法不对。 用普通方法调用,不要用多线程的方法调用,话说没报错吗?
我用的peewee来操作数据库,spider中改成普通方法调用,只能插入大概十几条数据,就不能继续插入数据了。抓取还在执行,也没有报错,不太懂哪里出问题了
放风喽 2020-01-27
  • 打赏
  • 举报
回复
调用写入函数的方法不对。 用普通方法调用,不要用多线程的方法调用,话说没报错吗?

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧