lov*_*ool 8 python python-multiprocessing python-pool
我试图将列表作为参数传递给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()
Run Code Online (Sandbox Code Playgroud)
但是,它从未触发过该功能co_refresh.如何将列表作为参数传递给我的函数?
旧问题(简体):
我有以下input_list,这是一个list的list:
[a1, b1, c1, d1]
[a2, b2, c2, d2]
[a3, b3, c3, d3]
Run Code Online (Sandbox Code Playgroud)
我有如下功能:
def func(a, b, c, d)
###
return;
Run Code Online (Sandbox Code Playgroud)
我想使用multiprocess来实现这个功能func:
from multiprocessing import Pool
pool = Pool(processes=5)
pool.map(func, input_list)
pool.close()
Run Code Online (Sandbox Code Playgroud)
但是,它从未触发过该功能func.如何将列表作为参数传递给我的函数?
geo*_*xsh 11
你应该定义你的功函数之前宣布的Pool,当你宣布Pool,分叉子工作进程从这一点来说,工作进程不执行代码超出该行,所以没有看到你的功函数.
此外,你最好更换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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11021 次 |
| 最近记录: |