Python Using List/Multiple Arguments in Pool Map(在池映射中使用列表/多个参数的Python)
                            本文介绍了在池映射中使用列表/多个参数的Python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
我正在尝试将列表作为参数传递给pool.map(co_refresh, input_list)。但是,pool.map没有触发函数co_refresh。并且也没有返回错误。看起来进程挂在那里。
原始代码:
from multiprocessing import Pool
import pandas as pd
import os
account='xxx'
password='xxx'
threads=5
co_links='file.csv'
input_list=[]
pool = Pool(processes=threads)
def co_refresh(url, account, password, outputfile):
    print(url + ' : ' + account + ' : ' + password + ' : ' + outputfile)
    return;
link_pool = pd.read_csv(co_links, skipinitialspace = True)
for i, row in link_pool.iterrows():
    ln = (row.URL, account, password, os.path.join('e:/', row.File_Name.split('.')[0] + '.csv'))
    input_list.append(ln)
pool.map(co_refresh, input_list)
pool.close()
但是,它从未触发函数co_refresh。如何将该列表用作传递给我的函数的参数?
旧问题(简化):
我有以下INPUT_LIST,它是list的list:
[a1, b1, c1, d1]
[a2, b2, c2, d2]
[a3, b3, c3, d3]
我有如下功能:
def func(a, b, c, d)
   ###
    return;
我想为此函数使用多进程func:
from multiprocessing import Pool
pool = Pool(processes=5)
pool.map(func, input_list)
pool.close()
但是,它从未触发函数func。如何将该列表用作传递给我的函数的参数?
推荐答案
您应该在声明Pool之前定义您的工作函数,当您声明Pool,sub worker processes forked时,工作进程不会执行该行以外的代码,因此看不到您的工作函数。
此外,您最好将pool.map替换为pool.starmap以适合您的输入。
简化示例:
from multiprocessing import Pool
def co_refresh(a, b, c, d):
    print(a, b, c, d)
input_list = [f'a{i} b{i} c{i} d{i}'.split() for i in range(4)]
# [['a0', 'b0', 'c0', 'd0'], ['a1', 'b1', 'c1', 'd1'], ['a2', 'b2', 'c2', 'd2'], ['a3', 'b3', 'c3', 'd3']]
pool = Pool(processes=3)
pool.starmap(co_refresh, input_list)
pool.close()
                        这篇关于在池映射中使用列表/多个参数的Python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:在池映射中使用列表/多个参数的Python
				
        
 
            
        基础教程推荐
             猜你喜欢
        
	     - 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
 - 修改列表中的数据帧不起作用 2022-01-01
 - 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
 - 包装空间模型 2022-01-01
 - Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
 - PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
 - PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
 - 在Python中从Azure BLOB存储中读取文件 2022-01-01
 - 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
 - 求两个直方图的卷积 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				