进程与线程

本文深入探讨了线程和进程的概念,包括线程的创建、资源抢占以及进程的生命周期。线程作为工厂里的工人,共享进程内存,可能会产生资源竞争。通过join方法可以确保数据写入完成后再进行读取。进程的PID用于标识和控制,而线程具有ident属性。主线程会等待所有子线程结束,守护模式下,主进程结束子线程也随之结束。
摘要由CSDN通过智能技术生成

之前已经简单的了解了进程有关的知识点,现在要学习的是线程有关的知识和进程的补充。

线程

什么是线程?

如果我们把进程比作一个工厂的话,那么线程就是工厂里面的工人或是工厂里面的流水线,所以一个进程里面可以包含多个线程。

工厂里面的空间是工人们共享的,所以在一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

一个线程可以被抢占也可以临时挂起等.

线程由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()

 传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值