简化代码看起来像
import gevent
from requests import get
from gevent.monkey import patch_all; patch_all()
def f1():
print("Thread 1 start")
x = get('https://www.google.com')
print("Thread 1 end")
def f2():
print("Thread 2")
gevent.joinall([
gevent.spawn(f1),
gevent.spawn(f2)
])
预期输出:
线程1开始
线程2
线程1结束
我需要锁定get请求的调用。所以,我需要得到以下输出:
线程1开始
螺纹1端
线程2
如何实现这样的get请求锁定?
答案 0 :(得分:0)
您应该这样做:
import gevent
from requests import get
from gevent.monkey import patch_all; patch_all()
from gevent.lock import Semaphore
sem = Semaphore()
def f1():
sem.acquire()
print("Thread 1 start")
gevent.sleep(0.1)
print("Thread 1 end")
sem.release()
def f2():
with sem:
print("Thread 2")
gevent.joinall([
gevent.spawn(f1),
gevent.spawn(f2)
])