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