gpt4 book ai didi

Python:不要映射 multiprocessing.Pool( ) 的空结果

转载 作者:行者123 更新时间:2023-11-30 22:52:04 25 4
gpt4 key购买 nike

程序具有可能返回 None 值的函数,以最大限度地减少该函数在并行工作线程中调用的时间。在下面的代码中,该函数的结果具有“None”值,如何从“ret”中排除该值?

#!/usr/bin/python
import sys,multiprocessing,time
maxNumber = sys.maxint+2

def numGen():
cnt=0
while cnt < maxNumber:
cnt +=1
yield cnt

def oddCheck(num):
global maxNumber
# time.sleep(1)
if not bool(num%1000000):
print "[%s%%] %s" % (int((num/maxNumber)*100),num)
if num%2:
return num

pool = multiprocessing.Pool( )
if sys.maxint < maxNumber:
print "We have problem on %s"%sys.maxint
# quit()
ret = pool.imap(oddCheck, numGen())
pool.close()
pool.join()

for x in ret:
print x

最佳答案

num 不是偶数时,

oddCheck 返回 None(在这种情况下,您没有 return 语句,因此 不会返回任何)。

如果您想避免 None 结果,只需使用列表理解来过滤它们:

ret = [x for x in pool.imap(oddCheck, numGen()) if x is not None]

应该可以解决问题;-)

关于Python:不要映射 multiprocessing.Pool( ) 的空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789568/

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