gpt4 book ai didi

python - 实现此线程的不同方法?

转载 作者:太空狗 更新时间:2023-10-30 02:21:23 25 4
gpt4 key购买 nike

我正在尝试 python 中的线程。我希望在另一种方法运行时显示旋转光标(5-10 分钟)。我已经完成了一些代码,但我想知道你会怎么做?我不喜欢使用全局变量,所以我认为有更好的方法吗?

c = True 

def b():
for j in itertools.cycle('/-\|'):
if (c == True):
sys.stdout.write(j)
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write('\b')
else:
return

def a():
global c
#code does stuff here for 5-10 minutes
#simulate with sleep
time.sleep(2)
c = False

Thread(target = a).start()
Thread(target = b).start()

编辑:

现在的另一个问题是,当处理结束时,旋转光标的最后一个元素仍在屏幕上。所以打印了类似 \ 的内容。

最佳答案

您可以使用事件: http://docs.python.org/2/library/threading.html

我测试了这个并且它有效。它还使所有内容保持同步。您应该避免在不同线程中更改/读取相同的变量而不同步它们。

#!/usr/bin/python

from threading import Thread
from threading import Event
import time
import itertools
import sys

def b(event):
for j in itertools.cycle('/-\|'):
if not event.is_set():
sys.stdout.write(j)
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write('\b')
else:
return

def a(event):
#code does stuff here for 5-10 minutes
#simulate with sleep
time.sleep(2)
event.set()

def main():
c = Event()
Thread(target = a, kwargs = {'event': c}).start()
Thread(target = b, kwargs = {'event': c}).start()

if __name__ == "__main__":
main()

与“kwargs”相关,来自 Python 文档(帖子开头的 URL):

class threading.Thread(group=None, target=None, name=None, args=(), kwargs={})
...
kwargs is a dictionary of keyword arguments for the target invocation. Defaults to {}.

关于python - 实现此线程的不同方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518142/

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