我是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!!!!!