【发布时间】:2021-05-07 16:08:19
【问题描述】:
这是我没有 concurrent.futures 的代码:
import finviz
def finvizxl(ticker):
data = finviz.get_stock(ticker)
globals()[ticker] = data
finvizxl('AAPL')
print(AAPL)
print(AAPL)
使用 finviz 模块和 finviz.get_stock 方法返回有关 AAPL 的股票信息。 globals() 函数将我的“AAPL”字符串转换为一个变量来存储data
这是我的 concurrent.futures 代码:
import finviz
import concurrent.futures
def finvizxl(ticker):
data = finviz.get_stock(ticker)
globals()[ticker] = data
if __name__ == '__main__':
with concurrent.futures.ProcessPoolExecutor() as executor:
x = ['AAPL', 'TSLA', 'GME']
executor.map(finvizxl, x)
print(AAPL)
我的目标是同时运行我的函数finvizxl()并将data分别存储在转换后的字符串'AAPL', 'TSLA', 'GME'中,这样当我输入print(aapl)时,将返回相应股票代码的股票信息. 但是,我收到了这个错误:
NameError: name 'AAPL' is not defined
当我将print(AAPL) 放在函数中时,
def finvizxl(ticker):
data = finviz.get_stock(ticker)
locals()[ticker] = list(data.values())
print(AAPL)
if __name__ == '__main__':
with concurrent.futures.ProcessPoolExecutor() as executor:
x = ['AAPL', 'TSLA', 'GME']
executor.map(finvizxl, x)
程序运行但没有返回任何内容。
但是,当我这样做时:
def finvizxl(ticker):
data = finviz.get_stock(ticker)
locals()[ticker] = list(data.values())
print(locals()[ticker])
if __name__ == '__main__':
with concurrent.futures.ProcessPoolExecutor() as executor:
x = ['AAPL', 'TSLA', 'GME']
executor.map(finvizxl, x)
我的所有 3 个股票代码 ['AAPL', 'TSLA', 'GME'] 都在终端中返回了他们的信息。
当我刚开始学习 python 时,我可能缺少一些基本的东西。感谢您的帮助。
【问题讨论】:
标签: python global-variables concurrent.futures