具有巨大文件循环的python3多处理dosnt加载所有行



我是python的新手,试图使用多处理模块用python循环巨大的文件,但我发现有大小限制,当我使用1个核心和文件包含8000行时,脚本在3000行后停止,2个核心只有1500,4个核心1000行

import requests
import sys
import functools
import os
import multiprocessing as mp

count= 0
start = time.time()
file_ip = "url10.txt"
file = open(file_ip, 'r')
urls = file.read().split('n')
def multi():
p = Pool(processes=8)
result = p.map(fonction, urls)

根据多处理编程指南:

应尽可能避免在进程之间转移大量数据。

multiprocessing.Pool依赖于pipe将工作分配给子进程。如果你填满了管道,整个应用程序很有可能会挂起。

只需尝试使用imap而不是map。代替可迭代传递文件对象,逻辑应该延迟读取这些行,避免填充内部缓冲区。

您确定要调用multi((函数吗?这个文件是你原来文件的简化版吗?

我发现问题出在我的线程计数器中,显示1000中只有444个测试,但实际上所有的行都正确通过了,许多线程同时启动,这就是为什么它们不被计算XD Daym!!!!!

最新更新