我正在尋找一種方法來簡化我的線程代碼。簡化python中的線程
有很多在我的代碼,我做類似的地方:
for arg in array:
t=Thread(lambda:myFunction(arg))
t.start()
即運行相同的功能,每次不同的參數,在線程。
這當然是實際代碼的簡化版本,並且通常for
循環內的代碼長度爲10-20行,在上例中使用一個輔助函數如myFunction
不能使其變得簡單如果是這樣,我可以只使用一個線程池)。
另外,這種情況在我的代碼中非常非常常見,所以有很多行我認爲是多餘的。這將幫助我很多,如果我沒有需要處理所有這些樣板代碼,而是能夠做這樣的事情:
for arg in array:
with threaded():
myFunction(arg)
即莫名其妙需要裏面的每一行代碼並運行它在一個單獨的線程。
我知道上下文管理者不應該被用在這種情況下,這可能是一個壞主意,需要一個醜陋的黑客,但是 - 是否可以完成,以及如何?
我不知道爲什麼你需要這個。你知道Python線程實際上並不在多個核心/ CPU上並行運行,對嗎? – 2010-06-26 12:36:34
@Eli:他的代碼不可能是IO綁定的,可以嗎? :) – 2010-06-26 12:40:35
@Mark:其實,這就是我問的原因。他的使用案例似乎不是IO限制。這可能是,因此我想知道它是什麼 - 總是樂於學習,你知道:-) – 2010-06-26 12:41:52