[英]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.