昨天,我在学习python的时候看到了这样一段代码:
t=threading.Thread(target=tcplink,args=(sock,addr))
我不知道什么意思,于是去问爸爸,爸爸告诉我:“这是python创建线程的语句。”并让我自己查询一些有关进程和线程的资料并且给我讲解了一下。今天我就和大家分享一下我对进程和线程的理解。
线程和进程
查完资料我自己画的图:
这是爸爸给我讲解线程和进程时的图:
我的理解:
一个操作系统由好多个进程组成,每一个进程都会分配一定的资源。每个进程都有许多线程,线程是没有资源的,它只和其它线程共享进程的资源,而进程本身运行的的程序也是一个进程。线程之间可以互相连接、调用和结束。
进程优先级
如图:Idle就是CPU闲置时间运行级。
我的理解:
每一个线程都在内存里排着队等待CPU去运行,CPU就给每一个线程一个运行时间,一个线程一个线程的运行,由于CPU算的很快,我们人感觉不到他在挨个运行,所以就像在同时运行了。而CPU给的运行时间,就是根据这个线程的父进程的优先级给的。每个进程都有相应的优先级,优先级决定它何时运行和接收多少 CPU 时间。
Python实例
理解了这些知识以后,我写了一段运用了多线程的Python代码,它可以用多线程打印多个1~9。
代码:
import threading,time
class MyThread(threading.Thread):
def __init__(self,threadname):
threading.Thread.__init__(self,name=threadname)
def run(self):
for i in range(10):
print(self.getName(),':',i)
time.sleep(1)
mya = MyThread('test1')
mya.start()
myb= MyThread('test2')
myb.start()
myc= MyThread('test3')
myc.start()
运行结果(因为优先级一样,他们的CPU时间都不多,是一句一句执行的,所以它不是连接的非常好):
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
==================== RESTART: D:/python学习/thread——test.py ====================
>>> test1test2test3 ::: 000
test1test2test3 ::: 111
test1test2test3 ::: 222
test1test2test3 ::: 333
test1test2test3 ::: 444
test1test2test3 ::: 555
test1test2test3 ::: 666
test1test2test3 ::: 777
test1test2test3 ::: 888
test1test2test3 ::: 999
领取专属 10元无门槛券
私享最新 技术干货