美文网首页python并发
02. 守护线程和线程之间共享全局变量

02. 守护线程和线程之间共享全局变量

作者: 花间派I风月 | 来源:发表于2020-05-04 21:11 被阅读0次

1. 守护线程

  1. 使用setDaemon(True)把所有的子线程都变成了主线程的守护线程,因此当主进程结束后,子线程也会随之结束。所以当主线程结束后,整个程序就退出了。
  2. 把子进程设置为守护线程,必须在start()之前设置。
  3. 为了让守护线程执行结束之后,主线程再结束,我们可以使用join方法,让主线程等待子线程执行
  4. join()在start()之后。
#!/usr/bin/env python
# coding:utf-8


import threading
import time


def run(n):
    print(f'task {n}')
    time.sleep(1)
    print('2s')
    time.sleep(1)
    print('1s')
    time.sleep(1)
    print('0s')
    time.sleep(1)


if __name__ == '__main__':
    t1 = threading.Thread(target=run, args=('t1',))
    t1.setDaemon(True)  # 把子进程设置为守护线程,必须在start()之前设置
    t1.start()
    t1.join()  # 设置主线程等待子线程结束
    print('main thread end.')

2. 多线程共享全局变量

  1. 线程是进程的执行单元,进程是系统分配资源的最小单位,所以在同一个进程中的多线程是共享资源的。
#!/usr/bin/env python
# coding:utf-8

import threading
import time

global_num = 100


def work1():
    global global_num
    for i in range(3):
        global_num += 1
    print(f'in work1 global_num is :{global_num}')


def work2():
    global global_num
    print(f'in work2 global_num is {global_num}')


if __name__ == '__main__':
    t1 = threading.Thread(target=work1)
    t1.start()
    time.sleep(1)
    t2 = threading.Thread(target=work2)
    t2.start()
# output:
in work1 global_num is :103
in work2 global_num is 103

相关文章

  • 02. 守护线程和线程之间共享全局变量

    1. 守护线程 使用setDaemon(True)把所有的子线程都变成了主线程的守护线程,因此当主进程结束后,子线...

  • 多线程

    打印正在运行的多个线程 通过继承的方式实现线程 多线程共享全局变量 多线程共享全局变量 args参数 互斥锁 如果...

  • 互斥锁和死锁

    在了解了多线程之后,我们知道同属于一个进程的线程之间是共享这个进程的所有全局变量和资源的,一个线程对共享资源的操作...

  • 多任务-线程

    必要时可封装 多线程之间全局变量共享,并传参数

  • python进线程——线程间的通信

    1. 共享全局变量 多个线程之间可以通过共用一个全局变量(如列表)来通信, 一个线程负责往里面放任务,另一个线程负...

  • Python 高级5

    多任务-线程、多线程执行、线程注意点、自定义线程、多线程-共享全局变量、互斥锁、死锁 1. 多任务-线程 <1>多...

  • 2018-09-19 守护线程与非守护线程

    什么是守护线程、非守护线程? 什么是守护线程,和main有关。 用户线程(非守护线程): 守护线程,有一个特征,和...

  • python3多线程通信方式,主要理解队列的join()和tas

    多线程通信方式 共享变量 创建全局变量,多个线程公用一个全局变量,方便简单。但是坏处就是共享变量容易出现数据竞争,...

  • python进程,线程,协程之间的对比

    1.先有进程,然后进程可以创建线程,线程是依附在进程里面的,线程里面可以包含多个协程; 2.进程之间不共享全局变量...

  • Python多任务_线程

    简单使用 多线程共享全局变量-互斥锁

网友评论

    本文标题:02. 守护线程和线程之间共享全局变量

    本文链接:https://www.haomeiwen.com/subject/iequghtx.html