在没有 time.sleep 的代码中添加时间延迟(代码包含线程)
Posted
技术标签:
【中文标题】在没有 time.sleep 的代码中添加时间延迟(代码包含线程)【英文标题】:Adding a Time delay in code without time.sleep (code contains threading) 【发布时间】:2021-09-07 06:32:59 【问题描述】:PSA:我是一名新程序员
我的目标是使用线程同时运行多个函数。每个功能目前都有几个 time.sleep 因为我需要在发生的许多步骤之间留出空隙。但是如果我使用 time.sleep 那么这些功能不会同时运行。 还有什么我可以用来代替 sleep 的东西来在我的代码中创建暂停,这不会导致线程挂起?
为了澄清,我不希望线程等待,我需要在函数中添加等待。
类似于我需要编写的实际程序的基本代码:
def saysHi():
time.sleep(5)
print("\nHi")
def saysBye():
time.sleep(5)
print("\nBye")
if __name__ == "__main__":
threading.Thread(target=saysHi()).start()
# starting thread 2
threading.Thread(target=saysBye()).start()
【问题讨论】:
您能否详细说明您希望线程何时等待?例如。在另一个线程设置的变量上? 嘿,@安吉丽娜。请将您的代码作为格式化文本包含在问题中,而不是链接它的屏幕截图。这将使人们更容易快速查看您的代码,如果他们想自己尝试任何代码,也可以复制粘贴。 【参考方案1】:您在传递给Thread
构造函数时调用函数:
threading.Thread(target=saysHi()).start()
要让它们同时运行,只需将函数作为参数传递给Thread
构造函数:
import threading, time
def saysHi():
print("starting h1")
time.sleep(5)
print("\nHi")
def saysBye():
print("starting bye")
time.sleep(5)
print("\nBye")
if __name__ == "__main__":
threading.Thread(target=saysHi).start() # saysHi is not called, just passed!
threading.Thread(target=saysBye).start()
输出:
starting h1
starting bye
Hi
Bye
【讨论】:
以上是关于在没有 time.sleep 的代码中添加时间延迟(代码包含线程)的主要内容,如果未能解决你的问题,请参考以下文章
uWSGI, Thread, time.sleep 使用问题