Python睡眠时不会干扰脚本?

时间:2011-02-27 21:54:20

标签: python function time sleep

嘿我需要知道如何在不干扰当前脚本的情况下在Python中睡觉。我尝试过使用time.sleep()但它会让整个脚本都处于睡眠状态。

例如


import time
def func1():
    func2()
    print("Do stuff here")
def func2():
    time.sleep(10)
    print("Do more stuff here")

func1()

我希望它立即在这里打印Do stuff,然后等待10秒并在这里打印更多的东西。

3 个答案:

答案 0 :(得分:7)

从字面上解释您的描述,您需要在调用func2()之前放置print语句。

但是,我猜你真正想要的是func2()一个后台任务,它允许func1()立即返回,而不是等待func2()完成它的执行。为此,您需要创建一个运行func2()的线程。

import time
import threading

def func1():
    t = threading.Thread(target=func2)
    t.start()
    print("Do stuff here")
def func2():
    time.sleep(10)
    print("Do more stuff here")

func1()
print("func1 has returned")

答案 1 :(得分:6)

您可以使用threading.Timer

from __future__ import print_function
from threading import Timer

def func1():
    func2()
    print("Do stuff here")
def func2():
    Timer(10, print, ["Do more stuff here"]).start()

func1()

但是作为@unholysampler already pointed out,最好只写:

import time

def func1():
    print("Do stuff here")
    func2()

def func2():
    time.sleep(10)
    print("Do more stuff here")

func1()

答案 2 :(得分:3)

如果您在命令行上运行脚本,请尝试使用-u参数。它以无缓冲模式运行脚本并为我做了诀窍。

例如:

python -u my_script.py