python threading

本文介绍了Python中并发和并行的概念,通过实例展示了如何使用threading模块创建线程进行并发任务。同时,解释了GIL全局解释器锁在Python多线程中的作用,即限制了线程的真正并行执行。文中还提供了一个自定义线程类`MyThread`,用于简化线程管理和获取结果。示例中演示了单例和多例线程的启动与同步方式。

python threading

并发:
一边看电视玩手机,一下只能运行一个,交替运行
并行:
一边开车一边听音乐,能同时往一个地方
进程:
运行一个饿了么app
线程:
多个用户同时下订单
GIL锁:
将线程作为并发处理

class MyThread(threading.Thread):
    """
    创建一个并行任务
    func 添加并行任务的函数名
    args 是需要传进来的参数
    get_result 获取线程运行后返回的任务结果
    """
    def __init__(self, func, args=()):
        super(MyThread, self).__init__()
        self.func = func
        self.args = args

    def run(self):
        self.result = self.func(*self.args)

    def get_result(self):
        threading.Thread.join(self)  # 等待线程执行完毕
        try:
            return self.result
        except Exception:
            return None
# 单例
thread = MyThread(func, args=(1,))
thread.start() # 启动线程
thread.join() # 当线程运行完了才运行主进程
# 多例
thread_list = []
for func in func_list:
    thread = MyThread(func, args=(1,))
    thread_list.append(thread) # 在列表里面添加所有运行的线程
for thread in thread_list:
    thread.start() # 将列表中的线程全部启动
for thread in thread_list:
    thread.join() # 所有线程运行完才运行主进程```

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值