之前已经简单的了解了进程有关的知识点,现在要学习的是线程有关的知识和进程的补充。
线程
什么是线程?
如果我们把进程比作一个工厂的话,那么线程就是工厂里面的工人或是工厂里面的流水线,所以一个进程里面可以包含多个线程。
工厂里面的空间是工人们共享的,所以在一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。
一个线程可以被抢占也可以临时挂起等.
线程由python解释器调度,进程是由操作系统调度。
主进程默认携带一个子线程,一个子进程默认携带一个子线程。
一个简单的线程案例:
import threading
import time
li = []
def ta():
for i in range(10):
li.append(i)
time.sleep(0.2)
print('添加完成')
def da():
print('read',li)
if __name__ == '__main__':
a = threading.Thread(target=ta)
b = threading.Thread(target=da)
a.start()
b.start()
上述案例中,列表中的数据并没有全部添加进去,然后就开始读取列表中的数据了。
说明线程之间会产生资源抢占的情况,所以我们需要在在读取数据函数执行之前完成数据的写入,那么读取数据就需要等待写入数据。这里就要使用join方法。
import threading
import time
li = []
def ta():
for i in range(10):
li.append(i)
time.sleep(0.2)
print('添加完成')
def da():
print('read',li)
if __name__ == '__main__':
a = threading.Thread(target=ta)
b = threading.Thread(target=da)
a.start()
a.join()
b.start()