所以我的目标是使用 multiprocessing 来运行一个返回列表的函数,但如果它花费的时间太长,则终止该线程。这是我的代码,主要受这篇文章的启发:
如何恢复传递给 multiprocessing.Process 的函数的返回值?
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()
当我运行它时,我得到'TypeError:unhashable type:'list''。我用谷歌搜索了这个错误,不幸的是真的很难理解它告诉我的内容(我是 python 新手)。
非常愿意采用另一种方式杀死一个需要很长时间的函数,以避免多处理凝灰岩。
你的问题是在线 return_dict[transactions] = transactions
Python Dict 要求键是不可变的(即不可更改)。
python Listtransactions
是可变的,因此您不能将其用作 key return_dict[transactions]
。
使它成为一个字符串return_dict['transactions'] = transactions
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句