socket server 接收数据,用 queue+sql 多线程处理问题

2018-07-26 22:13:06 +08:00
 zy820

我用 server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)接收 tcp 连接数据(可以收到),现在我想把接收的数据 data = bytearray(self.request.recv(1024).strip())存到 queue 中( sensor_que.put(sensor_data,block=True)),又单独启动新线程循环取 queue 数据并存到 sql,如果这样:def getsensor_que(): while True: sensor = sensor_que.get(block=True) #阻塞,queue 为空时,不会 Queue.Empty 异常 print(sensor) savetosql(sensor)

for i in range(multiprocessing.cpu_count()): t = threading.Thread(target=getsensor_que) t.start() 会不会死循环呢,还是可以?因为现在 socket 是一直接收数据并存到 queue 的,我想的是新开的线程也是一直从 queue 取数据保存。

949 次点击
所在节点    问与答
2 条回复
zy820
2018-07-26 22:14:01 +08:00
def getsensor_que():
while True:
sensor = sensor_que.get(block=True) #阻塞,queue 为空时,不会 Queue.Empty 异常
print(sensor)
savetosql(sensor)

for i in range(multiprocessing.cpu_count()):
t = threading.Thread(target=getsensor_que)
t.start()
zy820
2018-08-02 13:39:06 +08:00
没有大神指点一下吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/474493

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX