我正在尝试进行实时推文分类。为此,我正在使用tweepy流类。我想
问题是我的系统继续获取并保存推文。它不会移至下一步。我该怎么办?
流代码
import tweepy
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
if not status.text.startswith('RT'):
if 'https://t.co' not in status.text:
text=status.text
with open("Output.txt", "w",encoding='utf-8') as text_file:
text_file.write(text)
# Initializing the tokens
def run_stream():
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener,tweet_mode= 'extended')
myStream.filter(track=['corona'],languages=["en"],encoding='utf-8')
分类
def classify():
f = open("Output.txt", "r",encoding="utf-8")
return f.read(),clf.predict_proba(feat.transform([f.read()]))
运行功能
run_stream()
classify()
我面临的问题是系统继续运行第一个功能,而不移至下一个分类功能。
来自http://docs.tweepy.org/en/latest/streaming_how_to.html:
除非关闭连接,否则流不会终止,从而阻止线。 Tweepy在过滤器上提供了一个方便的is_async参数,因此流将在新线程上运行。例如
myStream.filter(track=['python'], is_async=True)
如果执行此操作,我怀疑您需要仔细管理对Output.txt的读写访问,否则,当文件包含部分写入操作时,您可能会读取该文件。最好使用专门构建的,线程安全的排队机制,例如Python queues。