Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以对customer Tweepy StreamListner类使用多处理吗?_Python_Multithreading_Multiprocessing_Tweepy - Fatal编程技术网

Python 我可以对customer Tweepy StreamListner类使用多处理吗?

Python 我可以对customer Tweepy StreamListner类使用多处理吗?,python,multithreading,multiprocessing,tweepy,Python,Multithreading,Multiprocessing,Tweepy,提前感谢,请允许我对多处理/线程领域一无所知。我对这个很陌生 目前,我成功地获取了所有包含“Yolo”一词的tweet,并将其存储到我的本地数据库(SQLite方式) 现在,我正在考虑使用SQS 比方说 1) 我正在收听来自twitter服务器的所有随机推文 2) 如果当前tweet(状态)是我想要的,那么我想将其存储到DB中。这就是“状态”(status)上的函数正在执行的操作 2-1)比方说(不是我的代码,而是…)我成功地制作了temp_数组,它应该在共享内存中包含每100条tweet(包含

提前感谢,请允许我对多处理/线程领域一无所知。我对这个很陌生

目前,我成功地获取了所有包含“Yolo”一词的tweet,并将其存储到我的本地数据库(SQLite方式)

现在,我正在考虑使用SQS

比方说

1) 我正在收听来自twitter服务器的所有随机推文 2) 如果当前tweet(状态)是我想要的,那么我想将其存储到DB中。这就是“状态”(status)上的函数正在执行的操作

2-1)比方说(不是我的代码,而是…)我成功地制作了temp_数组,它应该在共享内存中包含每100条tweet(包含“yolo”)(听说如果我想使用多处理器工作,我必须使用它)

3) 在def on_status执行其工作时,我想使用单独的处理器(多处理)通过函数名send_to_sqs()发送累积的100条tweet(在共享内存的temp_数组中)

对于步骤2)和3),我想使用两种不同的处理器

但我意识到这并不容易(对我来说),因为函数send_to_sqs()和update_tweet_bundle()和table.insert(tweet_dict)都在类中工作!(不在主要位置)

有人能告诉我在这种情况下如何使用多重处理吗?(很少有函数需要在事件驱动类中运行和执行单独的核心?)

附言

我之所以要分离这些函数,是因为在向SQS发送累积的100条tweet时,我要防止出现最坏的情况:在向SQS发送时,我可能会错过一些有价值的tweet,因为函数send_to_SQS()正在运行,有价值的tweet总是进入我的侦听器(StreamListener类)

类StreamListener(tweepy.StreamListener):
定义初始化(自):
super(StreamListener,self)。\uuuu init\uuuu()
self.temp_arr=[]
self.len\u temp\u arr=0
def无效(自身、状态):
如果len(status.text)<10,则返回True,否则返回False
def更新推文包(自我、新推文):
自我临时协议附加(新推特)
自透镜温度阵列+=1
def发送至sqs(自我):
# (1)
#发送临时通知给SQS!
#在temp_arr内部,应该有100条tweets作为字典格式。
打印('我们向SQS发送了推文包(假设!))
# (2)
#清空temp_arr(假设在共享内存中)
self.temp_arr=[]
self.len\u temp\u arr=0
def on_状态(自身、状态):
如果自我无用(状态):
返回
description=status.user.description
text=status.text
table=db[设置.表\u名称]
尝试:
tweet_dict=dict(
用户描述=描述,
text=text,
)
表.插入(tweet_dict)
如果self.len\u temp\u arr%100==0:
self.send_to_sqs()
其他:
self.update_tweet_bundle(tweet_dict)#我为多线程添加了..稍后。。
除编程错误作为错误外:
打印(错误)
def on_错误(自身、状态代码):
通过
def main():
stream_listner=StreamListner()
stream=tweepy.stream(auth=api.auth,listner=stream\u listner)
stream.filter(track=['yolo'])
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()