首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

邬小编讲多线程

昨天,我在学习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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121B0EB7D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券