python - 每 x 秒加载 dict 然后传递给 df 并清除 dict
问题描述
我正在尝试每 5 秒将值写入字典 1 分钟。然后我想将这些值放入数据框中以写入 csv 并清除原始字典并继续前进。
import time
import random
from multiprocessing import Process
a = {'value':[], 'timeStamp': []}
def func1():
global a
print "starting First Function"
a['value'].append(random.randint(1,101))
a['timeStamp'].append(time.time()*1000.0)
time.sleep(5)
return a
def func2():
print "starting Second Function"
time.sleep(60)
d = pd.DataFrame(a)
print d
# here i would write out the df to csv and del d
a.update({}.fromkeys(a,0))
print "cleared"
if __name__=='__main__':
while True:
p1 = Process(target = func1)
p1.start()
p2 = Process(target = func2)
p2.start()
p1.join()
p2.join()
print "test"
print a
这就是我现在所处的位置,这可能是也可能不是正确的方法。无论如何,这段代码并没有给我正确的结果。我正在尝试找出将 dict 放入 df 并清除它的最佳方法。希望有人做过类似的事情吗?
解决方案
你的代码有很多问题,几乎不适合任何用途。你可以用这样的东西开始你的研究(python 3,线程而不是进程):
import time
import random
import threading
def func1(a):
print("starting First Function")
for dummy in range(10):
a['value'].append(random.randint(1, 101))
a['timeStamp'].append(time.time() * 1000.0)
time.sleep(1)
print("stopping First Function")
def func2(a):
print("starting Second Function")
for dummy in range(2):
time.sleep(5)
print(a)
a['value'] = list()
a['timeStamp'] = list()
print("cleared")
print('stopping Second Function')
if __name__ == '__main__':
a = {'value': list(), 'timeStamp': list()}
t1 = threading.Thread(target=func1, args=(a,))
t1.start()
t2 = threading.Thread(target=func2, args=(a,))
t2.start()
输出是:
starting First Function
starting Second Function
{'value': [32, 95, 2, 71, 65], 'timeStamp': [1536244351577.3914, 1536244352584.13, 1536244353586.6367, 1536244354589.3767, 1536244355591.9202]}
cleared
{'value': [43, 44, 28, 69, 25], 'timeStamp': [1536244356594.6294, 1536244357597.2498, 1536244358599.9812, 1536244359602.9592, 1536244360605.9316]}
cleared
stopping Second Function
stopping First Function
推荐阅读
- python - Psycopg2 在类内自动重新连接
- jenkins - 并行阶段声明性管道内的选择参数
- python - 带有 pandas 和 altair 的表格气泡图
- python - 使用 Spotipy 将曲目添加到播放列表时出现多个错误
- python - 使用 Beautiful Soup 从 YouTube 播放列表中抓取曲目的链接
- reactjs - Eslint 阻止提交,终端永远卡在“正在运行 eslint ...”
- sql - 根据其他列值的条件创建对其他列求和的列?
- webm - 如何将 webm 的持续时间元数据值计算为十六进制?
- excel - 是否有不需要文本的 Excel 函数 CONCATENATE 的替代方法?
- python - Python CNN LSTM(值错误步幅的长度应为 1、1 或 3,但为 2)