两个while循环在一个?

时间:2013-11-22 17:02:56

标签: python loops while-loop irc

我正在用Python制作一个IRC机器人。每次从IRC服务器接收数据时都会重复while个循环。我希望每分钟运行另一个while循环,所以我无法想到将循环组合起来。

有没有办法“背景”其中一个循环,并允许程序的其余部分继续运行,而它“做它的事情”?

1 个答案:

答案 0 :(得分:4)

这个简单的例子应该让你开始,在这种情况下,有两个while循环,time.sleep(seconds)用于模仿一些工作

import threading
import time

def func_1():
    i = 0
    while i<5:
        i += 1
        time.sleep(1.5) # Do some work for 1.5 seconds
        print 'func_1'

def func_2():
    i = 0
    while i<5:
        i += 1
        time.sleep(0.5) # Do some work for 0.5 seconds
        print 'func_2'

thread1 = threading.Thread(target=func_1)
thread1.start()
thread2 = threading.Thread(target=func_2)
thread2.start()

产地:

func_2 #0.5 seconds elapsed
func_2 #1.0 seconds elapsed
func_1 #1.5 seconds elapsed finally func_1 :)
func_2 #1.5 threading is not mutithreading! ;)
func_2 #2.0 seconds elapsed
func_2 #2.5 seconds elapsed and since variable i is 5 func_2 is no more :(
func_1 #3.0 seconds elapsed
func_1 #4.5 seconds elapsed
func_1 #6.0 seconds elapsed
func_1 #7.5 seconds elapsed

编辑:

我的意思是说threading is not mutithreading! ;),如果您认为func_1func_2同时在1.5 seconds同时执行,那么它就不是 True ,因为线程在相同的内存空间中运行,但如果使用multiprocessing,它们会有单独的内存空间并且可以并发运行

最后,对于您的情况,您应该使用threading,因为它更适合这些类型的任务