CSV 行数中断 ThreadPool
CSV rowcount breaks ThreadPool
我在 Python 2.7 中遇到 CSV 和线程池的一个很奇怪的问题
每当我尝试计算 CSV 中的行数时,我的线程都不会启动。取消注释代码可以正常工作。
import csv
from multiprocessing.pool import ThreadPool
ifile = open('unzipped/49619.txt', "rb")
reader = csv.reader(ifile, delimiter='|')
#totalrows = sum(1 for row in csv.reader(ifile, delimiter='|'))
totalrows = 111907
print totalrows
def test(args):
print 'Yes!'
pool = ThreadPool(processes=500)
job_args = [(totalrows, i) for i, row in enumerate(reader)]
pool.map(test, job_args)
注释行的计数结果和下面的数量一样,111907,连类型都一样
这是某种奇怪的错误还是出了什么问题?
在您的注释行中,您正在迭代 reader,这将消耗您的输入文件。你用两个不同的reader也没关系,文件的读取位置都会在最后。
一种解决方案是在第二次迭代之前调用 ifile.seek(0)
倒回输入文件。
我在 Python 2.7 中遇到 CSV 和线程池的一个很奇怪的问题 每当我尝试计算 CSV 中的行数时,我的线程都不会启动。取消注释代码可以正常工作。
import csv
from multiprocessing.pool import ThreadPool
ifile = open('unzipped/49619.txt', "rb")
reader = csv.reader(ifile, delimiter='|')
#totalrows = sum(1 for row in csv.reader(ifile, delimiter='|'))
totalrows = 111907
print totalrows
def test(args):
print 'Yes!'
pool = ThreadPool(processes=500)
job_args = [(totalrows, i) for i, row in enumerate(reader)]
pool.map(test, job_args)
注释行的计数结果和下面的数量一样,111907,连类型都一样
这是某种奇怪的错误还是出了什么问题?
在您的注释行中,您正在迭代 reader,这将消耗您的输入文件。你用两个不同的reader也没关系,文件的读取位置都会在最后。
一种解决方案是在第二次迭代之前调用 ifile.seek(0)
倒回输入文件。