Python 从多处理器线程返回列表-TypeError:unhabable type:';列表';

Python 从多处理器线程返回列表-TypeError:unhabable type:';列表';,python,multithreading,Python,Multithreading,因此,我的目标是使用多处理来运行一个返回列表的函数,但是如果它花费的时间太长,就杀死线程。以下是我的代码,灵感主要来自这篇文章: 当我运行此命令时,会得到“TypeError:unhabable type:”列表“”。我在谷歌上搜索了这个错误,不幸的是,我真的很难理解它告诉我什么(我是python新手) 非常开放的另一种杀死函数的方法需要花费太长的时间,以避免多处理凝灰岩 您的问题出现在行return\u dict[transactions]=transactions Python Dict要

因此,我的目标是使用多处理来运行一个返回列表的函数,但是如果它花费的时间太长,就杀死线程。以下是我的代码,灵感主要来自这篇文章:

当我运行此命令时,会得到“TypeError:unhabable type:”列表“”。我在谷歌上搜索了这个错误,不幸的是,我真的很难理解它告诉我什么(我是python新手)


非常开放的另一种杀死函数的方法需要花费太长的时间,以避免多处理凝灰岩

您的问题出现在行
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()