如何解决同时运行两个功能
我定义了几个功能。
def func1():
'''something goes here'''
def func2():
'''something goes here'''
def func3():
'''something goes here'''
def func4():
'''something goes here'''
所以问题是:我想一直运行func1()
,如果我们在{时调用该函数,则其他函数(func2()
,func3()
,func4()
)应该可用{1}}正在运行。 我 不要 要运行func1()
,func2()
,func3()
,除非用户致电。如何做到这一点?
这是我到目前为止所做的
func4()
在这里我启动了功能if __name__ == '__main__':
Thread(target=func1()).start()
。意味着如果用户调用其他功能,则功能func1()
在运行时应该运行,否则应运行
我已经介绍了一些线程和多处理程序,但仍然无法得到答案。可能吗?如果是这样,请以正确的方式指导我。
预先感谢
解决方法
threading.Timer应该可以解决问题:
from threading import Timer
def func1():
t = Timer(60.0,func2)
t.start() #func2 will be called 60 seconds from now.
def func2():
'''something goes here'''
def func3():
'''something goes here'''
def func4():
'''something goes here'''
,
根据您的指定,这是代码。 func1()
由线程执行,并且继续执行。用户指定的输入将触发其余功能。
from threading import Thread
def func1():
'''do something'''
func1() #recursive call to keep it running
def func2():
'''something goes here'''
def func3():
'''something goes here'''
def func4():
'''something goes here'''
if __name__ == '__main__':
Thread(target=func1).start()
while True:
n = input("Enter Command: ")
if n=="func2":
func2()
elif n=="func3":
func3()
# add your cases
else:
print("Invalid Input")
,
假设您正在Python交互式控制台中执行此操作。如果您这样做:
from threading import Timer
def func2():
print("func2 called")
def func1():
print("func1 called")
t = Timer(60.0,func2)
t.start()
现在控制台是免费的,并显示提示。 func2
将在60.0
秒后执行,您可以调用func1()
或任何您想要的东西。看:
代码中一个明显的错误是启动所需的线程
Thread(target=func1).start()
即目标应引用该函数不要调用它(不是func1()
)。因此,代码应为:
from threading import Thread
import time
def func1():
while True:
print('Running func1')
time.sleep(60)
def func2():
'''something goes here'''
print('func2 called')
def func3():
'''something goes here'''
print('func3 called')
def func4():
'''something goes here'''
print('func4 called')
if __name__ == '__main__':
Thread(target=func1).start()
func2()
func3()
func4()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。