[英]Python threading proper way
我對Python線程,線程也很陌生,但我從未使用過它。 這就是我使用它的方式。
我有一個Source
類,並且我希望它的方法evaluate
在線程中執行。 evaluate
方法調用在類外部定義的效用函數increment
,該增量將全局變量增量。 全局變量的增加應在關鍵部分執行。 另外,經過一些處理后,我需要將線程暫停幾秒鍾。 我就是這樣實現的:
import threading
caseGT = threading.Lock()
GT = 0
def increment():
with caseGT:
GT = GT + 1
class Source:
def evaluate(self):
for (someCondition):
...
...
increment()
...
...
time.sleep(2)
這就是我調用方法評估的方式:
s = Source(....)
Thread(s.evaluate()).start()
我正在用testdata獲得有效結果。 但是我的問題是:
我想知道當多個線程同時工作時它是否會正常工作?
另外,在這種情況下,有沒有更好的方法來編寫使用線程?
我喜歡使用線程的方式是使用迭代器來啟動線程。
workers = []
for item in some_list:
worker = Thread(target=some_func, args=(item,))
workers.append(worker)
worker.start()
for worker in workers:
worker.join()
因此,我想在您的上下文中,您想在Source
中定義一個方法,該方法允許您傳遞可迭代對象,然后使用該可迭代對象中的項目作為參數來啟動線程。 在您的上下文中,僅將一個參數傳遞給evaluate
方法,您的實現就可以了。 但是我認為使用同一方法擴展到多個線程可能是一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.