gpt4 book ai didi

python - 将多个变量传递给PoolExecutor

转载 作者:行者123 更新时间:2023-12-03 13:23:28 24 4
gpt4 key购买 nike

下面的代码正常工作,但是...

from concurrent.futures import ThreadPoolExecutor as PoolExecutor

date = "2020-06-12"
adjusted_symbol_list = ["AAPL", "MSFT", "NFLX"]
date_variable = get_specific_date_from_web()


def filter_2ndconfirm(symbol):
if date == "2020-06-12":
if make_calc() == True:
print(symbol)

def filter_2ndconfirm_workers(filter_2ndconfirm_workers, adjusted_symbol_list):
with PoolExecutor(max_workers=5) as executor:
for _ in executor.map(filter_2ndconfirm_workers, adjusted_symbol_list):
pass

filter_2ndconfirm_workers(filter_2ndconfirm, adjusted_symbol_list)

get_specific_date_from_web()正在计算,并在几个http连接后获取日期,因此只能工作一次。上面的代码正常工作,但是如何插入另一个变量,即date_variable到filter_2ndconfirm func中呢?我可以像下面这样,但我不想为每个符号查询网络:
def filter_2ndconfirm(symbol):
date_variable = get_specific_date_from_web()
if date == date_variable:
print(symbol)

谢谢

最佳答案

如果您已经在 filter_2ndconfirm 函数外部定义了变量 date_variable ,则可以在函数内部访问其值,从而:

def filter_2ndconfirm(symbol):
if date == date_variable:
print(symbol)

但是,这样一来,您将无法在函数内部更改其值。为此,您可以将其用作 全局变量。

否则,您可以将 date_variable 作为参数传递给该函数:

将此新参数添加到 filter_2ndconfirm
def filter_2ndconfirm(symbol, date_variable):
if date == date_variable:
print(symbol)
if date == "2020-06-12":
if make_calc() == True:
print(symbol)

然后向 executer.map 添加一个附加参数
for _ in executor.map(filter_2ndconfirm_workers, adjusted_symbol_list, date_variable):

第二个选项通常更好,因为每个进程都使用其自己的 date_variable 副本,但是您的选择可能取决于不同的因素,例如变量的大小以及是否在函数中进行编辑。

关于python - 将多个变量传递给PoolExecutor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62360723/

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