我正在寻找一种方法来简化我的线程代码。
我的代码中有很多地方可以执行以下操作:
for arg in array:
t=Thread(lambda:myFunction(arg))
t.start()
即在线程中运行相同的函数,每次针对不同的参数。
这当然是真实代码的简化版本,通常for
循环内的代码长约 10-20 行,不能像myFunction
上面的例子那样使用一个辅助函数来简化(如果是这种情况,我可以只使用线程池)。
此外,这种情况在我的代码中非常非常常见,因此我认为有很多行是多余的。如果我不需要处理所有这些样板代码,而是能够执行以下操作,那将对我有很大帮助:
for arg in array:
with threaded():
myFunction(arg)
即以某种方式threaded()
获取其中的每一行代码并在单独的线程中运行它。
我知道在这种情况下不应该使用上下文管理器,这可能是一个坏主意,并且需要一个丑陋的 hack,但尽管如此 - 可以做到吗,怎么做?