1、线程通信
线程之间共享全局变量;
import threading
import time
num = 100
def demo1():
global num
num += 1
print("demo1---%d" % num)
def demo2():
print("demo2---%d" % num)
def main():
t1 = threading.Thread(target=demo1)
t2 = threading.Thread(target=demo2)
t1.start()
t2.start()
print("---main---%d" % num)
if __name__ == '__main__':
main()
# demo1---101
# demo2---101
# ---main---101
2、线程传参
thereading.Thread(target,args,kwargs)都是通过关键字方式传参,即xx=xx这种形式;
(1)参数args:接收的是一个元组,默认是一个空元组,会将元组中的每个元素按顺序传入线程对应的函数中,函数中记得使用形参接收;
(2)参数kwargs:接收的是一个字典,默认是一个空字典;注意:字典中的键是函数中所必需的含有的形参,没有则报错;
**
参数args
import threading
import time
def sing(music):
print("---sing:%s---" % music)
time.sleep(2)
print("--end111--")
def dance(dance_sort):
print("---dance:%s---" % dance_sort)
time.sleep(1)
print("--end222--")
if __name__ == '__main__':
music = 'hello'
dance_sort = "lading"
t1 = threading.Thread(target=sing, args=(music,))
t2 = threading.Thread(target=dance, args=(dance_sort,))
t1.start()
t1.join(0.5)
t2.start()
t2.join()
print(111)
运行结果:
---sing:hello---
---dance:lading---
--end222--
111
--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--