我想知道在主线程中运行函数的可能性,而调用函数在另一个线程中。
考虑下面的例子
from thread import start_new_thread
def add(num1,num2):
res = num1 + num2
display(res)
def display(ans):
print ans
thrd = start_new_thread(add,(2,5))
在这里,我正在调用add()
一个新线程。依次调用display()
即显示也在同一个线程中运行。
我想知道如何display()
在该线程之外运行。
根据以下答案的新代码
如果我试图接受用户的输入并打印结果。它只要求输入一次但不重复......
from threading import Thread # threading 比 thread 模块好 from Queue import Queue
q = Queue() # 使用队列将消息从工作线程传递到主线程
def add():
num1=int(raw_input('Enter 1st num : '))
num2=int(raw_input('Enter 2nd num : '))
res = num1 + num2
# send the function 'display', a tuple of arguments (res,)
# and an empty dict of keyword arguments
q.put((display, (res,), {}))
def display(ans):
print ('Sum of both two num is : %d ' % ans)
thrd = Thread(target=add)
thrd.start()
while True: # a lightweight "event loop"
# ans = q.get()
# display(ans)
# q.task_done()
f, args, kwargs = q.get()
f(*args, **kwargs)
q.task_done()
当我运行代码时,结果如下
当前结果
Enter 1st num : 5
Enter 2nd num : 6
Sum of both two num is : 11
要求的结果
Enter 1st num : 5
Enter 2nd num : 6
Sum of both two num is : 11
Enter 1st num : 8
Enter 2nd num : 2
Sum of both two num is : 10
Enter 1st num : 15
Enter 2nd num : 3
Sum of both two num is : 18
我需要它在每次打印结果后要求输入,如下所示