0
我想在處理超過2GB的csv文件時使用多處理器。問題在於輸入只是在一個進程中被消耗,而其他進程似乎是空閒的。迭代器上的Python多處理器
以下重新創建我遇到的問題。是否有可能使用迭代器使用多進程?將內存全部輸入到內存中是不理想的。
import csv
import multiprocessing
import time
def something(row):
# print row[0]
# pass
return row
def main():
start = time.time()
i = open("input.csv")
reader = csv.reader(i, delimiter='\t')
print reader.next()
p = multiprocessing.Pool(16)
print "Starting processes"
j = p.imap(something, reader, chunksize=10000)
count= 1
while j:
print j.next()
print time.time() - start
if __name__ == '__main__':
main()
你的回答非常有幫助,但它似乎提出了幾個問題。當我運行代碼而沒有在()中加入睡眠時,一個進程會消耗大量內存。當我將睡眠(0.4)添加到某物中時,此問題不存在。這有什麼理由嗎? – BHa
我能說什麼?這些過程確實並行運行。但是如果不知道關於你的數據和你的功能的其他信息,我不能告訴你其他任何事情。如果您的進程比CPU密集型的更多,那麼多處理可能無濟於事。 – chapelo