我想知道在主線程中運行函數的可能性,其中調用函數在另一個線程中。如何運行一個線程在python外線程中調用的函數
考慮例如
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()
。
新的代碼爲每答案下面
如果我試圖接受用戶輸入並打印結果。它要求輸入只有一次,但不重複......
從螺紋進口螺紋#線程是比線程模塊 從隊列進口隊列更好
Q =隊列()#使用隊列來傳遞從消息工作線程主線程
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
,我需要它每次打印結果後,要求輸入,如下面
創建一個新的線程和運行函數存在。 –
@DavidHeffernan如果我創建一個新的線程和運行該功能將再次運行是另一個線程。但我不想在一個線程中運行它。它應該正常曬黑。 – Rao
所有代碼都在一個線程中運行。沒有線程,什麼都不能運行。你需要更清楚。 –