进程、线程、协程(线程篇)

(对于线程篇的一些基本了解)

什么是线程?
  • 在一个进程的内部要同时干多件事,就需要同时运行多个子任务,我们把进程内的这些子任务叫做线程;

  • 线程通常叫做轻型的进程,线程事共享内存空间的并发执行的多任务,每一个线程都共享一个进程的资源;

  • 线程是最小的执行单元,而进程有至少一个线程组成;

  • 如何调度进程和线程,完全由操作系统决定,程序自己是不能决定什么时候执行和执行多长时间。(这些有操作系统决定的)

  • 关于模块:

  1. _thread模块 低级模块(接近底层C语言写的)
  2. threading模块 高级模块,对_thread进行了封装
# 启动一个线程
import threading, time
def run(a):
    print('子线程--{}--开始'.format(threading.current_thread().name))
    # 实现线程的功能
    time.sleep(2)
    print('打印', a)
    print('子进程--{}--结束'.format(threading.current_thread().name))
if __name__ == '__main__':
    # 任何进程默认就会启动一个线程,成为主线程,主线程可以启动新的子线程
    print('主线程({})启动'.format(threading.current_thread()))
    # 创建子线程
    t = threading.Thread(target=run, args=(1,), name='runThread')
    t.start()
    # 等待线程结束
    t.join()
    print('主线程({})结束'.format(threading.currnet_thread()))
# 线程间共享数据
'''
    多线程和多进程最大的不同在于:多进程中,同一个变量,各自有一份拷贝在每个进程中,互不影响。
    而多线程中,所有变量都由所有线程共享。所以任何一个变量都可以被任意一个线程修改。
    因此线程之间共享数据最大的危险,多个线程同时修改一个变量,容易把内容改乱
'''
import threading
num = 100
def run(n):
    global num
    for i in range(100000):
        num += n
        num -= n
if __name__ == '__main__':
    t1 = threading.Thread(target=run, args=(6,))
    t2 = threading.Thread(target=run, args=(9,))
    t1.start()
    t2.start()
    t1.joi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值