@
1.多任务的概念
“多任务工作”指的是当前很普遍的工作状态,一个人同时处理多件事情,比如以下这个常见的画面:写一会报告,刷一下网页,查一下资料,收一下邮件,回去做一下数据,点开微信回应一下,再回去贴图表……诸如此类。今天这个时代,专注在一件事情上,已经近乎不可能了。每个人手上都有一大堆任务,同时开着Word、Excel、PPT,微信和QQ总是同时闪动好几个头像……似乎,不能同时处理这些事情,就是能力不够。
2.线程
python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的使用
threding的使用
import threading
import time
#子线程
def saySorry():
print("你好")
time.sleep(1)
#主线程
if __name__ == '__main__':
for i in range(6):
t=threading.Thread(target=saySorry())
t.start()
查看当前有多少线程正在运行
import threading
import time
#子线程
def thread1():
for i in range(5):
print("你好 %d"% i )
time.sleep(1)
def thread2():
for i in range(10):
print("你好__%d"% i )
time.sleep(1)
#主线程
if __name__ == '__main__':
t1 = threading.Thread(target=thread1())
t2 = threading.Thread(target=thread2())
t1.start()
t2.start()
while True:
length = len(threading.enumerate())
print("当前的therad数目为%d" % length)
if length<= 1:
break
time.sleep(0.5)
菜鸟教程thread模块
#!/usr/bin/python3
import _thread
import time
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
# 创建两个线程
try:
_thread.start_new_thread( print_time, ("Thread-1", 2, ) )
_thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print ("Error: 无法启动线程")
while 1:
pass
注意
- 相当于使用了反射的方法,在后面加入要传入的参数,最后个参数后面加,
- 子线程依附着主线程,所以在菜鸟的教程中加了个死循环的主线程
- sleep为io操作,在io密集的时候使用多线程有好处,计算密集时不能节约时间