Python 从多处理器线程返回列表-TypeError:unhabable type:';列表';
因此,我的目标是使用多处理来运行一个返回列表的函数,但是如果它花费的时间太长,就杀死线程。以下是我的代码,灵感主要来自这篇文章: 当我运行此命令时,会得到“TypeError:unhabable type:”列表“”。我在谷歌上搜索了这个错误,不幸的是,我真的很难理解它告诉我什么(我是python新手)Python 从多处理器线程返回列表-TypeError:unhabable type:';列表';,python,multithreading,Python,Multithreading,因此,我的目标是使用多处理来运行一个返回列表的函数,但是如果它花费的时间太长,就杀死线程。以下是我的代码,灵感主要来自这篇文章: 当我运行此命令时,会得到“TypeError:unhabable type:”列表“”。我在谷歌上搜索了这个错误,不幸的是,我真的很难理解它告诉我什么(我是python新手) 非常开放的另一种杀死函数的方法需要花费太长的时间,以避免多处理凝灰岩 您的问题出现在行return\u dict[transactions]=transactions Python Dict要
非常开放的另一种杀死函数的方法需要花费太长的时间,以避免多处理凝灰岩 您的问题出现在行
return\u dict[transactions]=transactions
Python Dict要求键是不可变的(即不可变的)
python列表transactions
是可变的,因此不能将其用作键return\u dict[transactions]
将其设置为字符串
return_dict['transactions']=transactions
当您试图将可修改对象(列表、集合等)插入不允许它的容器(集合的值、dict的键等)时,通常会出现此错误.有没有一种不使用dict将变量传回主线程的方法?这似乎很有效!!你是男人中的英雄。我想我应该查一下什么是Dict!!dict是一个字典,是的,您应该阅读更多关于python数据类型的内容。
def scrapeBank(bankName, return_dict)
# [do some stuff that generates list of transactions]
return_dict[transactions] = transactions
TIMEOUT = 60 # seconds
if __name__ == '__main__':
manager = multiprocessing.Manager()
return_dict = manager.dict()
p = multiprocessing.Process(target=scrapeBank, args=('bankName',return_dict))
p.start()
p.join(TIMEOUT)
if p.is_alive():
print('function terminated')
p.terminate()
p.join()
print return_dict.values()