首页 > 解决方案 > 每 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

解决方案


你的代码有很多问题,几乎不适合任何用途。你可以用这样的东西开始你的研究(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

推荐阅读