[英]How can I speed up this python script to read and process a csv file?
我正在尝试在python中处理相对较大的(约10万行)csv文件。 这是我的代码如下所示:
#!/usr/bin/env python
import sys
reload(sys)
sys.setdefaultencoding("utf8")
import csv
import os
csvFileName = sys.argv[1]
with open(csvFileName, 'r') as inputFile:
parsedFile = csv.DictReader(inputFile, delimiter=',')
totalCount = 0
for row in parsedFile:
target = row['new']
source = row['old']
systemLine = "some_curl_command {source}, {target}".format(source = source, target = target)
os.system(systemLine)
totalCount += 1
print "\nProcessed number: " + str(totalCount)
我不确定如何优化此脚本。 除DictReader外,我还应该使用其他东西吗?
我必须使用Python 2.7,并且无法升级到Python 3。
如果要避免多处理,可以将较长的csv文件拆分为几个较小的csv,然后同时运行它们。 喜欢
$ python your_script.py 1.csv & $ python your_script.py 2.csv &
“与”号代表linux envs中的后台执行。 此处有更多详细信息。 我对Windows中的类似功能还没有足够的了解,但是可以打开几个cmd窗口,哈哈。
无论如何,坚持多处理 ,ofc会更好。
如何使用requests
而不是curl?
import requests response = requests.get(source_url) html = response.content with open(target, "w") as file: file.write(html)
赛跑
subprocess.Popen(systemLine)
代替
os.system(systemLine)
应该加快速度。 请注意,systemLine必须是字符串列表,例如['some_curl_command','source','target']才能正常工作。 如果你想限制并发命令的数量看看那个 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.