我想使用多处理程序包从多个来源使用JSON读取数据。我也想无限期地这样做。
这是我的代码文本:
while True:
time_start = datetime.datetime.now()
f = open("data_logging_pv.csv", "ab")
c = csv.writer(f)
if __name__ == '__main__':
p=Pool(6)
output = p.map(getData, [2, 4, 5, 6, 7, 9])
j = 0
for i in [2, 4, 5, 6, 7, 9]:
c.writerow([time_start, i, output[j][0], output[j][1], output[j][2], output[j][3], output[j][4]])
j = j + 1;
print(output)
print("\nTemps d'execution:" +str(datetime.datetime.now()-time_start))
f.close()
p.terminate()
函数getData是JSON请求。
执行没有实现p.map,但是创建了进程。 我不知道如何调试它。
我对python有点生疏,并且使用过多处理,然后可能会有一些基本的'错误。
由于 马丁。
答案 0 :(得分:0)
不确定,你有这种错误,但这段代码在python2.7上正常工作:
import csv
import datetime
import signal
from multiprocessing.pool import Pool
def getData(item):
return [item, item + 1, item ** item, item * 2, 0]
def worker():
signal.signal(signal.SIGINT, signal.SIG_IGN)
if __name__ == '__main__':
time_start = datetime.datetime.now()
file = open("data_logging_pv.csv", "ab")
c = csv.writer(file)
pool = Pool(6, initializer=worker)
try:
while True:
output = pool.map(getData, [2, 4, 5, 6, 7, 9])
for i, res in zip([2, 4, 5, 6, 7, 9], output):
c.writerow([str(datetime.datetime.now()), i] + res)
except KeyboardInterrupt:
exit()
finally:
pool.terminate()
pool.join()
print("\nTemps d'execution:" + str(datetime.datetime.now() - time_start))
file.close()