我正在用Python制作一个IRC机器人。每次从IRC服务器接收数据时都会重复while
个循环。我希望每分钟运行另一个while
循环,所以我无法想到将循环组合起来。
有没有办法“背景”其中一个循环,并允许程序的其余部分继续运行,而它“做它的事情”?
答案 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_1
和func_2
同时在1.5 seconds
同时执行,那么它就不是 True ,因为线程在相同的内存空间中运行,但如果使用multiprocessing
,它们会有单独的内存空间并且可以并发运行
最后,对于您的情况,您应该使用threading
,因为它更适合这些类型的任务