gpt4 book ai didi

python - Process.join() 和队列不适用于大量数据

转载 作者:太空狗 更新时间:2023-10-29 21:23:56 29 4
gpt4 key购买 nike

<分区>

我正在尝试拆分 for 循环,即

N = 1000000
for i in xrange(N):
#do something

使用 multiprocessing.Process 并且它适用于较小的 N 值。当我使用更大的 N 值时出现问题。在 p.join() 之前或期间发生了一些奇怪的事情并且程序没有响应。如果我在函数 f 的定义中放置 print i 而不是 q.put(i) 一切正常。

如果有任何帮助,我将不胜感激。这是代码。

from multiprocessing import Process, Queue

def f(q,nMin, nMax): # function for multiprocessing
for i in xrange(nMin,nMax):
q.put(i)

if __name__ == '__main__':

nEntries = 1000000

nCpu = 10
nEventsPerCpu = nEntries/nCpu
processes = []

q = Queue()

for i in xrange(nCpu):
processes.append( Process( target=f, args=(q,i*nEventsPerCpu,(i+1)*nEventsPerCpu) ) )

for p in processes:
p.start()

for p in processes:
p.join()

print q.qsize()

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com