Python多处理池.map()无限循环问题
我将Pool.map()函数应用于我的用户定义函数,该函数从DB加载数据,但效果不好它保持无限循环。 在不使用“pool.map()”的情况下,在每个jupyter笔记本中分别从DB导入数据是没有问题的。您知道从DB单独加载和同时使用map()加载有什么区别吗? 如果我知道这两个过程之间的区别,我想我可以找到解决循环和不停止问题的线索 当我不使用用户定义的函数而是使用'sum()'或任何其他基本函数时,我可以意识到使用'pool.map()'的并行处理执行得很好Python多处理池.map()无限循环问题,python,loops,multiprocessing,Python,Loops,Multiprocessing,我将Pool.map()函数应用于我的用户定义函数,该函数从DB加载数据,但效果不好它保持无限循环。 在不使用“pool.map()”的情况下,在每个jupyter笔记本中分别从DB导入数据是没有问题的。您知道从DB单独加载和同时使用map()加载有什么区别吗? 如果我知道这两个过程之间的区别,我想我可以找到解决循环和不停止问题的线索 当我不使用用户定义的函数而是使用'sum()'或任何其他基本函数时,我可以意识到使用'pool.map()'的并行处理执行得很好 def parallelized
def parallelized():
with Pool(processes = 8) as pool:
if __name__ == '__main__':
df = pool.map(minc, yms)
pool.close()
pool.join()
return df
parallelized()
yms = ['201901','201902','201903','201904','201905','201906','201907','201908','201909','201910','201911','201912','201801','201802','201803','201804','201805','201806','201807','201808','201809','201810','201811','201812']
def minc(ym):
print('MINC %s %s\n' %(ym, str(datetime.datetime.now())))
print("value %s is in PID : %s \n" % (ym, os.getpid()))
t = datetime.datetime.now()
minc1 = pd.read_sql("""
select substring(MINC_IN_YM,1,4) as YEAR,substring(MINC_IN_YM,5,2) as
MONTH,
MINC_VNDCD as 'FROM',
MINC_BRNCD+''+MINC_BRNCD_WHS as 'TO',
MINC_PTNO as PTNO,
count(MINC_INSP_NO) as NROWS,
sum(MINC_OKQTY) as TOTAL_QUANTITY,
sum(MINC_AV_PRICE*MINC_OKQTY) as TOTAL_DOLLARS
from dwadm.W_MINC
where MINC_INC_INF in ('RN','CN')
and MINC_ACCID in ('A', 'G', 'V')
and MINC_IN_YM ='%s'
and substring(MINC_BRNCD, 1, 1) not in ('S','C')
GROUP BY YEAR,MONTH, MINC_BRNCD,MINC_BRNCD_WHS,MINC_VNDCD, MINC_PTNO
""" % ym , conn)
print(' MINC ends %s1 %s %s\n' %(ym,
str(datetime.datetime.now()),str(datetime.datetime.now()-t)))
return minc1
将
if\uuuuuu name\uuuuu='\uuuuu main\uuuuu':
放在parallellelized()
调用的顶层。您需要发布代码。@OneLiner我发布了我的代码,我怀疑jupyter笔记本中是否使用了多处理。我认为它们可能不兼容。请尝试在终端中运行代码。@DanD。我试试看。Thx:)Thx。但我刚才改变了那个部分,它似乎并没有解决问题(