使用for循环读取多处理缺失的可迭代对象

问题描述 投票:0回答:1

抱歉,如果我的措辞错误,下面是我的脚本,我试图找出为什么当我查看存档文件(我创建的)时,当要打开/读取的文件有 10000 时,我只看到 9874 行。我我想我想理解为什么缺少一些迭代。我已经尝试过几次,但这个数字总是有所不同。我做错了什么?

import multiprocessing
import hashlib
from tqdm import tqdm

archive = open('color_archive.txt', 'w')

def generate_hash(yellow: str) -> str:
    b256 = hashlib.sha256(yellow.encode()).hexdigest()
    x = ' '.join([yellow, b256])
    archive.write(f"{x}\n")

if __name__ == "__main__":
    listofcolors = []   
    with open('x.txt') as f:
        for yellow in tqdm(f, desc="Generating..."):
            listofcolors.append(yellow.strip())
           
    cpustotal = cpu_count() - 1
    pool = multiprocessing.Pool(cpustotal)
    results = pool.imap(generate_hash, listofcolors)
    pool.close()
    pool.join()
print('DONE')

这个脚本执行得很好,但是当查看存档文件时,有些行丢失了,例如一个 10000 行的文件只向新文件写入了 9985 行,我做错了什么?

python for-loop multiprocessing
1个回答
0
投票

可以在这里参考python知识:https://pythonid.com/tutorials/python-for-loops

© www.soinside.com 2019 - 2024. All rights reserved.