gpt4 book ai didi

Python - 如何将线程变成线程安全

转载 作者:行者123 更新时间:2023-11-30 22:06:12 27 4
gpt4 key购买 nike

所以我一直在考虑如何使线程安全,原因是每当我运行我创建的程序只是为了好玩。我意识到控制台收到了太多垃圾邮件,以至于它的速度不够快,无法将其逐一打印。

基本上,我所做的是使用一个列表列表,该列表与不同水果的列表没有什么特别的,可以说

list = ['apple','banana','kiwi'....]

然后我有一个名为 data 的东西,它基本上使用记录器打印出来。

logger.log(data)

完整的程序看起来像这样

 def sendData(list, data):

logger.log(data)

def main():
...
...
...
data_list.append((list[i], data))

for index, data in data_list:
threading.Thread(target=sendData, args=(list, data)).start()

基本上,正如我们所看到的,这可能是有很多线程同时运行,这会导致交互,从而使控制台打印出很多错误,所以现在的问题是:

我怎样才能把它变成某种线程安全的?每个线程开始的 sleep 会很神奇吗?

最佳答案

您可能需要研究threading.Lock(),它可用于防止多个线程同时执行输出任务,从而混合控制台中的单词:

def sendData(list, data):
with lock:
logger.log(data)

lock = threading.Lock()
def main():
...
...
...
data_list.append((list[i], data))

for index, data in data_list:
threading.Thread(target=sendData, args=(list, data)).start()

这将防止多个线程同时运行“with”中的代码。

当线程X进入“with” block 时,它将声明该锁。如果另一个线程尝试声明它(进入“with” block ),它将必须等待,直到线程 X 释放锁。

关于Python - 如何将线程变成线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com