python threadingd多线程老是出错
#coding=utf-8importthreadingfromtimeimportctimedefmusic(m):print'在听%s,现在是%s'%(m,ctime...
#coding=utf-8
import threading
from time import ctime
def music(m):
print '在听%s,现在是%s'%(m,ctime())
def movie(mo):
print '在看%s,现在是%s'%(mo,ctime())
threads=[]
t1=threading.Thread(target=music,args=(u'飒飒',))
threads.append(t1)
t2=threading.Thread(target=movie,args=(u'问问'))
threads.append(t2)
for t in threads:
t.setDaemon(True)
t.start() 展开
import threading
from time import ctime
def music(m):
print '在听%s,现在是%s'%(m,ctime())
def movie(mo):
print '在看%s,现在是%s'%(mo,ctime())
threads=[]
t1=threading.Thread(target=music,args=(u'飒飒',))
threads.append(t1)
t2=threading.Thread(target=movie,args=(u'问问'))
threads.append(t2)
for t in threads:
t.setDaemon(True)
t.start() 展开
推荐于2018-05-09
展开全部
把你的代码执行了一下,应该是有两个地方有问题。
1、入参(u'飒飒',)这个改成(u'飒飒'.encode("utf-8"),)
2、t2=threading.Thread(target=movie,args=(u'问问')),这个地方改成
t2=threading.Thread(target=movie,args=(u'问问',))。不然会当成两个参数。
3、第三个不确定你的用途。就是t.setDaemon(True)那个地方。调用setDaemon的时候,子线程会随着主线程一起结束,不管子线程是否执行完成。所以有时候会出现执行完了啥输出都没有的情况。如果想让主线程等待子线程,在start后面使用t.join()。这样就会一直都有输出了。
修改完如下:
# coding=utf-8
import threading
from time import ctime
def music(m):
print '在听%s,现在是%s' % (m, ctime())
def movie(mo):
print '在看%s,现在是%s' % (mo, ctime())
threadList = []
t1 = threading.Thread(target=music, args=(u'飒飒'.encode("utf-8"),))
threadList.append(t1)
t2 = threading.Thread(target=movie, args=(u'问问'.encode("utf-8")))
threadList.append(t2)
for t in threadList:
t.setDaemon(True)
t.start()
#t.join()
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询