我正在嘗試編寫一個循環,其中包含一個異步部分。儘管我不想每次迭代都等待這個異步部分。有沒有辦法不等待循環內的這個函數完成?如何不等待函數完成python
在代碼(例如):
import time
def test():
global a
time.sleep(1)
a += 1
test()
global a
a = 10
test()
while(1):
print a
提前感謝!
我正在嘗試編寫一個循環,其中包含一個異步部分。儘管我不想每次迭代都等待這個異步部分。有沒有辦法不等待循環內的這個函數完成?如何不等待函數完成python
在代碼(例如):
import time
def test():
global a
time.sleep(1)
a += 1
test()
global a
a = 10
test()
while(1):
print a
提前感謝!
你可以把它放在一個線程。取而代之的test()
from threading import Thread
Thread(target=test).start()
工作正常!謝謝! –
一個簡單的方法是運行測試()在另一個線程
import threading
th = threading.Thread(target=test)
th.start()
你應該看看一個庫意味着異步請求,比如這裏gevent
例子:http://sdiehl.github.io/gevent-tutorial/#synchronous-asynchronous-execution
import gevent
def foo():
print('Running in foo')
gevent.sleep(0)
print('Explicit context switch to foo again')
def bar():
print('Explicit context to bar')
gevent.sleep(0)
print('Implicit context switch back to bar')
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
使用thread
。它創建一個新的線程在異步函數運行
https://www.tutorialspoint.com/python/python_multithreading.htm
你*不*有一個異步的一部分 - 'time.sleep'阻止。 – jonrsharpe