python进程和线程_Python中的进程和线程

进程和线程

我们打开我们的计算机就会看到进程和线程

那什么是进程什么是线程

我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。

线程是进程的一个实体。

进程——资源分配的最小单位,线程——程序执行的最小单位。

我举个例子,比如打开qq,就是一个线程,有很多个qq上号就是进程

python线程和进程的使用

现在讲python线程和进程的使用

在Python中线程和进程的使用就是通过Thread这个类。这个类在我们的_thread和threading模块中。

我们看一个标准的多线程的例子。

练习

下面我们来练习下, 加深hreading模块的使用。

我写了下面的代码

我们先不加join()来阻塞,t1和t2两个线程同时执行,由于位置先打印hello,再打印hi,这个时候都sleep2秒钟,但是他sleep2秒钟,主程序还是在执行,所以下面打印print('主线程完毕'),最后才打印Bye和OUT

线程间变量的共享

代码如上图所示,打印的a是1还是2,

答案是 :2。因为出现了global,线程间变量的共享,在func中的a是全局变量。

下面,我们提高一点点难度,代码如下图所示,还是猜一猜a是啥东西。注意:这里出现了join来阻塞来增加了加和减的操作。

相信很多人都认为是0,其实这个a的值是变化的,可能这次是0 ,下次是1,还有可能是1000000,a就是在[-1000000,1000000]中的一个随机数。

为什么呢?这是因为虽然他们是同时运行的,但是同时在修改我们的a,那就乱了。这是导致a,for i in range(1000000),就是遍历了1000000,incr和decr的方法都加上一起了,在这1000000次遍历中,不知道有多少加,多少减,比如,我1000000都是加,没有减,a就是1000000。

如果你就是想出现0,其实加一个互斥锁就可以了。这样你加多少次,我就减多少次,加减的次数不会叠加。因此来了lock的用法。

这个a怎么运行都是 0。因为我们把这个a锁上了,这样就加1000000次,减1000000次,怎么出来都是我们的0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值