1、线程通信

线程之间共享全局变量;

  1. import threading
  2. import time
  3. num = 100
  4. def demo1():
  5. global num
  6. num += 1
  7. print("demo1---%d" % num)
  8. def demo2():
  9. print("demo2---%d" % num)
  10. def main():
  11. t1 = threading.Thread(target=demo1)
  12. t2 = threading.Thread(target=demo2)
  13. t1.start()
  14. t2.start()
  15. print("---main---%d" % num)
  16. if __name__ == '__main__':
  17. main()
  18. # demo1---101
  19. # demo2---101
  20. # ---main---101

2、线程传参

thereading.Thread(target,args,kwargs)都是通过关键字方式传参,即xx=xx这种形式;
(1)参数args:接收的是一个元组,默认是一个空元组,会将元组中的每个元素按顺序传入线程对应的函数中,函数中记得使用形参接收;
(2)参数kwargs:接收的是一个字典,默认是一个空字典;注意:字典中的键是函数中所必需的含有的形参,没有则报错;
**
参数args

  1. import threading
  2. import time
  3. def sing(music):
  4. print("---sing:%s---" % music)
  5. time.sleep(2)
  6. print("--end111--")
  7. def dance(dance_sort):
  8. print("---dance:%s---" % dance_sort)
  9. time.sleep(1)
  10. print("--end222--")
  11. if __name__ == '__main__':
  12. music = 'hello'
  13. dance_sort = "lading"
  14. t1 = threading.Thread(target=sing, args=(music,))
  15. t2 = threading.Thread(target=dance, args=(dance_sort,))
  16. t1.start()
  17. t1.join(0.5)
  18. t2.start()
  19. t2.join()
  20. print(111)

运行结果:

  1. ---singhello---
  2. ---dancelading---
  3. --end222--
  4. 111
  5. --end111--

参数kwargs:

import threading
import time


def sing(music):
    print("---sing:%s---" % music)
    time.sleep(2)
    print("--end111--")


def dance(dance_sort, other):
    print("---dance:%s---" % dance_sort)
    print("---dance:%s---" % other)
    time.sleep(1)
    print("--end222--")


if __name__ == '__main__':
    t1 = threading.Thread(target=sing, kwargs={"music": "hello"})
    t2 = threading.Thread(target=dance, kwargs={"other": "test", "dance_sort": "lading"})

    t1.start()
    t1.join(0.5)

    t2.start()
    t2.join()

    print(111)

运行结果:

---sing:hello---
---dance:lading---
---dance:test---
--end222--
111
--end111--