Python函数作为后台进程运行

时间:2016-02-26 17:07:48

标签: python python-2.7

我知道有一些方法可以让程序等待一个函数完成,但是有一种方法可以让函数在被调用后在程序的后台进行。

如果你正在制作程序计时器,这可能特别有用,如下所示。

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中进行后台处理。

2 个答案:

答案 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}}方法。