【发布时间】:2016-12-22 00:35:56
【问题描述】:
我正在尝试使用multiprocessing 库中的Pool 来分配查找历史股票价格数据以获取符号列表的任务。
在我尝试使用返回的数据之前,这很有效。我定义了hist_price 函数,它输出到字典列表pcl。我可以print(pcl) 并且它一直完美无缺,但是如果我在if __name__=='__main__': 块之后尝试print(pcl),它会说pcl 未定义。我试过在几个地方声明global pcl,但这并没有什么不同。
from multiprocessing import Pool
syms = ['List', 'of', 'symbols']
def hist_price(sym):
#... lots of code looking up data, calculations, building dicts...
stlh = {"Sym": sym, "10D Max": pcmax, "10D Min": pcmin} #simplified
return stlh
#global pcl
if __name__ == '__main__':
pool = Pool(4)
#global pcl
pcl = pool.map(hist_price, syms)
print(pcl) #this works
pool.close()
pool.join()
print(pcl) #says pcl is undefined
#...rest of my code, dependent on pcl...
我也尝试删除 if __name__=='__main__': 块,但它给了我一个 RunTimeError 告诉我专门把它放回去。还有其他方法可以调用变量以在if 块之外使用吗?
【问题讨论】:
-
你有
if __name__=='__main__':是因为你是从终端运行脚本还是其他原因? -
@MosesKoledoye 可能是因为 OP 正在使用多处理。
-
@poke 哦好的。显然是这样。
标签: python variables multiprocessing global main