浅析python中进程和线程

本文详细介绍了线程与进程的概念及应用,包括线程的创建方法、多线程同步机制、互斥锁的使用,以及进程创建和队列操作等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、线程:
     1.创建一个线程方式1
thd = threading.Thread(target=函数, args=(位置参数), kwargs={名字:值})
thd.start()

创建一个线程方式2
class mythread(threading.Thread):
def run():
子线程运行的代码

等待子线程运行完成
thd.join(超时时间)

多线程执行顺序如何?
无序 随机

同一个进程的线程 共享 全局变量

什么是 多线程同步?
协同-按照一定的秩序运行

        互斥锁的特点?
保证 任何一个事件点 只有一个线程能够成功申请 
如何使用
创建
lock = threading.Lock()
申请
lock.acquire()
释放
lock.release()


    2、多任务的应用场景

 爬虫

   3、GIL 全局解释器锁-互斥锁 cpython->C语言的内存管理 不能同时被多个线程 进行内存的管理

二. 进程

1.概念:

   进程是操作系统进程资源分配的基本单位

    ----> 进程间是独立的数据空间  不共享全局变量

2. ps -aux 查看当前系统中所有的进程
       PID process id 进程ID-操作系统 管理多进程的时候 编号

3. 孤儿进程-父进程挂了子进程还在运行
    init接管孤儿进程作为父进程 - 父进程回收子进程资源
    僵死进程 - 子进程退出 父进程没有回收子进程的资源 如果需要回收子进程.join()

  4. 创建进程
       # 创建Process对象
   # target指定子进程运行的函数 
   pro = multiprocessing.Process(target=func, args=(100,))
   # 启动子进程的创建和执行
   pro.start()

 5. 队列
    创建 q = Queue(队列最大长度)
    放 q.put(data,True,-1) = q.put(data)
       q.put(data,True,10)
       q.put(data,False) = q.put_nowait(data)
   
       取到的数据  = q.get() == q.get(True,-1)
       q.get(True, 10)
       q.get_nowait() = q.get(False)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值