跨线程在集/列表中添加/删除

时间:2018-04-09 16:58:24

标签: python multithreading list variables set

我正在开发一个代码类似于以下代码的项目。我想知道是否可以使这个线程安全吗?我需要能够跟踪哪些元素已被更改,并将它们从下一个循环中排除。注意,函数t1和t2没有执行相同的功能。

简单地说,我需要修改列表,设置或类似的内容,以便能够跟踪进度并知道何时退出每个线程中的循环。

from multiprocessing import Process
import threading

elements = list()
elements.add({
    'key': 'old_value'
})

elements.add({
    'key': 'old_value2'
})

changed_elements = list()
def change(element, value):
    element['key'] = value
    changed_elements.append(element)
    elements.remove(element)

def t1:
    for i in range(0, 99):
        for element in elements:
            if condition:
                change(element, value)

def t2:
    for i in range(0, 49):
        for element in elements:
            if condition2:
                change(element, value2)

if __name__ == '__main__':
    Process(target=t1).start()
    Process(target=t2).start()

0 个答案:

没有答案