我使用SimpleHTTPServer
作为代理。过度简化,我的程序看起来像这样:
print_lock = Lock()
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
displayABC()
displayDEF()
def do_POST(self):
displayABC()
def displayABC():
print_lock.acquire()
print "A"
print "B"
print "C"
print_lock.release()
def displayDEF():
print_lock.acquire()
print "D"
print "E"
print "F"
print_lock.release()
httpd = SocketServer.ForkingTCPServer(('', 80), Proxy)
httpd.serve_forever()
由于许多请求进入速度非常快,display
方法在请求之间重叠,即:
A
D # -> Note that they are 'out of order' in the output
E
F
B
C
...
当我理想地喜欢同一方法中的所有印刷品相互跟随时:
A
B # -> Correct order
C
D
E
F
...
您可以在代码中看到我尝试使用Lock()
,这没有任何效果。我搜索SO并且有一些类似的问题,但它们都处理线程。