python

时间:2017-07-17 08:46:32

标签: python multithreading terminal queue

我是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)

我希望找到一些帮助,谢谢

0 个答案:

没有答案