python - Python 多线程 CSV 读写排序
问题描述
我有一个从 csv 文件 (inputs.csv) 读取并为 csv 的每一行调用 API 端点的用例。并将输出写入不同的 csv (outputs.csv) 并按特定列对输出 csv 进行排序。我可以通过下面的代码实现所有这些。需要找出我是否可以以多线程方式更有效地完成它。
def main():
start = time.time()
print "read from csv file "
input_file = 'inputs.csv'
output_file = 'outputs.csv'
read_write_csv(input_file, output_file)
print("after output-->",time.time() - start)
sort_csv(output_file)
print("after sort -->",time.time() - start)
def read_write_csv(input_file, output_file):
with open(input_file, 'r') as csv_file:
reader = csv.reader(csv_file)
# Reading row by row
count = 0
for row in reader:
# Opening csv result file in append mode
with open(output_file, "a+") as csv_save:
writer = csv.writer(csv_save)
print "mac address ", row[0]
writer.writerow([row[0], callExternalAPI(row[0])]),(row,))
print "{0} devices processed so far".format(count+1)
csv_save.close()
def sort_csv(output_file):
with open('sorted.csv', 'w') as csv_final:
r = csv.reader(open(output_file), delimiter=",")
writer_final = csv.writer(csv_final)
sortedResponse = sorted(r, key=operator.itemgetter(1), reverse=True)
for row in sortedResponse:
writer_final.writerow(row)
main()
如您所见,我是这里的 python 新手,因此欢迎任何改进代码的建议。
解决方案
推荐阅读
- java - 使用 Jackson 解析 XML 时出现 MismatchedInputException
- automationanywhere - 在 Web Recorder 命令中管理 Web 控件和对象克隆对象属性之间的区别
- dart - Flutter中关闭应用程序时如何接收本地通知?
- swift - 为什么 Int.random() 比 arc4random_uniform() 慢?
- java - 如何在黄瓜测试中部署 Localstack
- vapor - 如何确定传入帖子数据的类型?
- teradata - 为什么加载到 Teradata 时 abinitio 会出现此错误?“输入端口在活动时关闭(未读数据保留)”
- hadoop - 用年份在猪中加载数据时出错
- wpf - ToolTip 显示子元素的类型而不是子元素的内容
- reactjs - 我的团队应该为移动和 Web 使用单独的组件库,还是为两者使用统一的跨平台组件库?