我是python和线程的新手,我开始通过创建此代码来学习:
def PutChar(Ch): #ask user to put the correct char
b=raw_input("Enter "+Ch+" char ")
while (b != Ch):
b=raw_input("Enter "+Ch+" char ")
return b
def sleep_time():#sleep time function
n=11
print(t)
if(t=='f'):
n=10000
print(t)
for i in range(1,n):
time.sleep(1)
if(i==5):
print"\ntime almost finish:",i
print"Enter f char "
print"\ntime finish",i
def Return():"""function return to test the return value of thread"""
t=q.get()
return t
def PutFchar(in_q): #function for putting the F char
k=PutChar('f')
#putEchar()
in_q.put(k)
def PutEchar():#function for putting the E char
PutChar('e')
print("cycle correct")
我在main()函数中有这段代码:
q=Queue.Queue()
t2=threading.Thread(target=sleep_time)
t1=threading.Thread(target=PutFchar, args=(q,))
t1.start()
t2.start()
t1.join()
t2.join()
print"Program finish"
我有三个问题:
首先:为什么当我使用队列函数时代码块?我的意思是在这段代码中我使用线程并行运行PutFchar()
和sleep_time()
函数,但是当我在线程函数之间添加队列函数时,PutFchar
工作但是{{1功能块
这是截图:
enter image description here
第二:我在sleep_time
函数中调用PutEchar()
但控制台显示错误,所以我可以在线程函数中调用函数吗?
这是截图:
enter image description here
最后:我放了PutFchar()
函数来测试Return()
的返回值,我第一次将queue
直接放入Return {)函数中:
q.get()
并打印它以显示值:
def Return():
return q.get()
这是控制台中的结果:
def sleep_time():
n=11
print(q.get())
if(q.get()=='f'):
n=10000
print(n)
for i in range(1,n):
time.sleep(1)
if(i==5):
print"\ntime almost finish:",i
print"Enter f char "
print("\ntime finish",i," second")
未将结果放入Enter s char s
Enter g char g
Enter f char f
f==>the waited result but the program block like the first question
t
我在结果中找到variable
,但当我将结果放入f char
时,控制台会显示此编号{{1}为什么这个数字?为什么不t variable
(15)
的ASCII码
这是控制台中的结果:
(102)
我希望找到一些帮助,谢谢