簡體   English   中英

Python線程正確方法

[英]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獲得有效結果。 但是我的問題是:

  1. 我想知道當多個線程同時工作時它是否會正常工作?

  2. 另外,在這種情況下,有沒有更好的方法來編寫使用線程?

我喜歡使用線程的方式是使用迭代器來啟動線程。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM