我知道有一些方法可以让程序等待一个函数完成,但是有一种方法可以让函数在被调用后在程序的后台进行。
如果你正在制作程序计时器,这可能特别有用,如下所示。
import time
count = 0
def timer():
while True():
time.sleep(60)
count += 1
print("This program has now been running for " + str(count) + " minutes"
timer() # Carry this function out in the background
print("Hello! Welcome to the program timer!")
name = raw_input("What is your name?")
print("Nice to meet you, " + name + "!")
# More stuff here...
我希望有一种方法可以在python中进行后台处理。
答案 0 :(得分:5)
这听起来像是线程。
线程模块相对简单,但要注意以这种方式执行任何CPU绑定活动。有很多计时器和睡眠,或IO绑定,那么这很好。
线程模块示例:
import time
from threading import Thread
def timer(name):
count = 0
while True:
time.sleep(60)
count += 1
print("Hi " + name + "This program has now been running for " + str(count) + " minutes.")
print("Hello! Welcome to the program timer!")
name = raw_input("What is your name?")
print("Nice to meet you, " + name + "!")
background_thread = Thread(target=timer, args=(name,))
background_thread.start()
澄清 - 与多处理模块相比相对简单 - 如果您的后台活动是CPU重,您可能需要查看。
python docs有一个很好的教程:https://docs.python.org/2/library/threading.html#thread-objects
答案 1 :(得分:1)
您可以使用thread
。
来自Wikipedia:
在计算机科学中,执行的线程是最小的序列 程序指令,可由a独立管理 调度程序,通常是操作系统的一部分。[1]该 线程和进程的实现在操作之间有所不同 系统,但在大多数情况下,线程是进程的一个组件。 多个线程可以存在于一个进程中,并发执行 (一个在其他人完成之前开始)并共享资源,如 内存,而不同的进程不共享这些资源。在 特别是,进程的线程共享其指令 (可执行代码)及其上下文(其中任何变量的值) 给定的时间)。
您可以使用:
import threading
t1 = threading.Thread(target=timer)
t1.start()
t1.join()
Thread
类还提供start()
和join()
方法来控制线程的启动并提供等待线程完成执行的机制(即{达到了{1}}方法。