【发布时间】:2022-12-09 08:37:25
【问题描述】:
所以我正在尝试将值分配给模块多处理中的队列。我的代码是:
from multiprocessing import Queue
fileBlocks = Queue()
filesDic = dict()
cont = 0
def eDiv(files, k):
global fileBlocks
listLinesAllWithIdx = []
index = 0
bytesCount = 0
blockLines = []
blockLinesAll = []
allBytes = 0
n = 0
lineCount = 0
for file in files:
with open(file) as f:
filesDic[file] = index
for line in f:
listLinesAllWithIdx.append((index,line, utf8len(line)))
allBytes += utf8len(line)
index += 1
while n < allBytes:
bytesCount = 0
blockLines = []
while bytesCount <= k and lineCount < len(listLinesAllWithIdx):
blockLines.append(listLinesAllWithIdx[lineCount])
bytesCount += listLinesAllWithIdx[lineCount][2]
lineCount += 1
n += bytesCount
blockLinesAll.append(blockLines)
for i in blockLinesAll:
fileBlocks.put(i)
print(fileBlocks.empty())
def utf8len(s):
return len(s.encode('utf-8'))
eDiv(["file1.txt","file2.txt"], 10)
我想从此命令 print(fileBlocks.empty()) 获得的输出是 True 但它给了我 False 我不明白为什么会这样
【问题讨论】:
标签: python multiprocessing queue shared-memory