python 多线程 及多线程通信
2021-07-05 08:04
标签:必须 第一个 方法 put tar als art bre 结束 1、简单的多线程例子 def a_fun(): def c1(a1): def c2(a1): def a1(): cs2="第二个子线程cs2" a1() 如果在a1中想判断 两个线程是否都执行完了,可以用 python 多线程 及多线程通信 标签:必须 第一个 方法 put tar als art bre 结束 原文地址:https://www.cnblogs.com/wasayezi/p/9599199.htmlimport threading,time
def b_fun(i):
print "____________b_fun start"
time.sleep(7)
print "________________b_fun end"
print "__________a_fun start"
t = threading.Thread(target=b_fun, args=(1,))
# t.setDaemon(True) #setDaemon()设置为False和没有这句话一个意思,设置为True,就是主线程a_fun函数不登t这个子线程了,a运行完,不管t运行完没有,a和t都结束,且setDaemon必须放在start()前面 t.start()
print "__________1",
# t.join(3) #join()小括号中设置3的意思是,主线程a_fun函数运行到这的时候,等子线程t 3秒钟,三秒钟后不管子线程t结束没,a都继续运行下去,执行到return,主线程结束时子线程还可以继续在运行,直到结束
# 如果join小括号中没有设置,就代表,主线程在这个地方一直等着子线程结束后,主线程才继续执行下去
#如果这个地方没有join()这个方法,就代表,主线程不等子线程,主线程直接运行下去
return "返回值"
cc=a_fun()
print cc
这种情况主要是,当一个多线程,开了几个子线程,想知道几个子线程的执行情况的时候用到
#带通信的多线程 Queue(队列,先进先出)
import threading,Queue,time
q=Queue.Queue()
time.sleep(7)
print a1
q.put("c1 put 的内容")#put 存入到队列中
time.sleep(4)
print a1
q.put("c2 put 的内容")# put 存入到队列中
print "a1开始_______"
cs1="第一个子线程cs1"
t1=threading.Thread(target=c1,args=(cs1,))
t1.start()
t2=threading.Thread(target=c2,args=(cs2,))
t2.start()
qq=q.get() #获取队列中的内容,并删除
if qq: #如果队列中有内容,说明两个队列已经执行一个了
print qq
while True:
if q.qsize()==2:
print q.qsize()
print q.get()
break
上一篇:java调用js简单应用
文章标题:python 多线程 及多线程通信
文章链接:http://soscw.com/index.php/essay/102015.html