Python 如何有效地分析许多实时数据?
我目前正在开发一个用户网络行为分析工具。 实时用户操作数据约为每秒3000个对象。 我正在使用python捕获实时数据 我想分析许多用户操作数据:Python 如何有效地分析许多实时数据?,python,numpy,Python,Numpy,我目前正在开发一个用户网络行为分析工具。 实时用户操作数据约为每秒3000个对象。 我正在使用python捕获实时数据 我想分析许多用户操作数据: 总共单击了多少个鼠标左/右键 使用动作A(B、C、D、E等)单击了多少个鼠标左/右键 在一小时内,用动作A(B、C、D、E等)点击了多少个鼠标左/右键 同一时间做了多少相同的动作 我想知道如何有效地分析这些实时数据 此外,我正在将这些数据保存到数据库中,但我想知道这些分析是实时的。 此外,我还使用了很多If-Else节,这似乎不是最佳代码。 基本上,
If-Else
节,这似乎不是最佳代码。
基本上,我正在寻找实时分析许多数据的最佳方法
我的主要问题是
If-Else
短语{
"usercode": row['usercode'],
"actiontime": row['actiontime'],
"actioncode": row['actioncode'],
"mousebutton": row['mousebutton']
}
数据处理逻辑:
config_action_threshold = 10
config_moment_threshold = 4
memory_collector = dict()
memory_action = dict()
memory_action_hourly = dict()
memory_moment = dict()
def addData(item):
if item['usercode'] not in memory_collector:
memory_collector[item['usercode']] = {"leftclick":0,"rightclick":0,"actions":0}
memory_action[item['usercode']] = dict()
memory_action_hourly[item['usercode']] = {"0006":{},"0612":{},"1218":{},"1824":{}}
memory_moment[item['usercode']] = {"actiontime":0,"count":0}
collector = memory_collector[item['usercode']]
action = memory_action[item['usercode']]
action_hourly = memory_action_hourly[item['usercode']]
moment = memory_moment[item['usercode']]
#normalizing
if item['actioncode'] not in action:
action[item['actioncode']] = {"actionL":0,"actionR":0,"actionA":0,"actionB":0}
actioncode = action[item['actioncode']]
if item['mousebutton'] == 'L':
actioncode['L'] += 1
else:
actioncode['R'] += 1
# I have to use if condition because count up when the action occurs over `config_action_threshold`
if actioncode['L'] >= config_action_threshold:
if collector['actionL'] == 0:
collector['actionL'] += config_action_threshold
else:
collector['actionL'] += 1
if actioncode['R'] >= config_action_threshold:
if collector['actionR'] == 0:
collector['actionR'] += config_action_threshold
else:
collector['actionR'] += 1
if actioncode['actionA'] >= config_action_threshold:
if collector['actionA'] == 0:
collector['actionA'] += config_action_threshold
else:
collector['actionA'] += 1
if actioncode['actionB'] >= config_action_threshold:
if collector['actionB'] == 0:
collector['actionB'] += config_action_threshold
else:
collector['actionB'] += 1
if (moment['actiontime'] == item['actiontime']):
moment['count'] += 1
if moment['count'] == config_moment_threshold:
collector['moment'] += config_moment_threshold
elif moment['count'] > config_moment_threshold:
collector['moment'] += 1
else:
moment['actiontime'] = item['actiontime']
moment['count'] = 0
您考虑过并发吗?如果您可以访问多核计算机或计算机集群,您可能会将问题归结为并发线程/进程。我会考虑为with或其他可以处理数千个并发连接的东西构建web前端。@Blender的想法+1也可以处理数千个并发连接!