Python 多线程:伪多线程?详细代码总结

本文详细介绍了Python中多线程的应用技巧,包括普通多线程、主线程等待子线程、主线程带走子线程、共享全局变量、互斥锁、信号锁、事件锁和全局解释器锁等内容,并对比了不同锁机制对线程安全的影响。

1. 普通多线程

# 1. 主线程,子线程各单独执行,最终都正常结束

import threading
import time 

def doWaiting():
    print(f"start waiting: {
     
     time.strftime('%H:%M:%S')}")
    time.sleep(3)
    print(f"stop waiting: {
     
     time.strftime('%H:%M:%S')}")

t = threading.Thread(target = doWaiting)
          
t.start()           # 子线程

time.sleep(1)    
print("Start job")  # 主线程并不等子线程执行完毕
print("End job")

2. 主线程等子线程:join()

# 2. 主线程等待子线程(本质上将多线程变成了单线程)

import threading
import time 

def doWaiting():
    print(f"start waiting: {
     
     time.strftime('%H:%M:%S')}")
    time.sleep(3)
    print(f"stop waiting: {
     
     time.strftime('%H:%M:%S')}")

t = threading.Thread(target = doWaiting)
          
t.start()           # 子线程

time.sleep(1)    
print("Start job")  

t.join()            # 主线程等待子线程,直至执行完毕
          
print("End job")

3. 主线程带走子线程:setDaemon()

# 3. 主线程结束,则全部子线程被强制终止(子线程为守护线程)

import time
import threading

# 子线程
def sub_thread(num):
    time.sleep(1)
    print(f"thread {
     
     num} is running")

print(f"main_thread starting..")

time.sleep(1
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值