for message in messages:
self.numberT+=1
if(self.numberT%100==0):
print str(self.numberT)
thread1= threading.Thread(target=self.worker_gender,args=(message,))
thread2 = threading.Thread(target=self.worker_sentiment,args=(message,))
thread1.start()
thread2.start()
所以我像这样开始我的代码,只需打开两个线程,给两个独立的函数并将它们都输入相同的输入。在这两个函数中,我称之为API
response = unirest.get(correct stuff),
然后我做了我想要的回复。我想我在这里做了一些不安全的线程。两者的响应都是JSON文件,显然有不同的字段。我发现错误被捕获,在定义之前使用了响应。响应变量是一个字典,所以我可以这样访问它,当我这样做时,我发现字段不存在(有时)。我认为我的线程代码是在错误的响应上执行的,我得到了我期望从线程1得到的响应,但它正在线程2中使用,依此类推。如果有人能指出一些资源,那就不会发生那种情况会很好。
另一个可能的问题是每个消息我打开两个访问两个api的线程。因此,当这开始时我可以有1000个线程,例如调用API 1和1000个线程并行调用API 2。我不知道这是否与它有关。
我真的认为我是以某种方式用http请求创建人为竞争条件。
谢谢你的帮助。