假设我有这样的代码:
def func1(a,b,c):
try:
p = pycurl.Curl()
p.setopt(pycurl.PROXY, "127.0.0.1")
p.setopt(pycurl.PROXYPORT, 9050)
p.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
p.perform()
p.close()
except pycurl.error as error:
if error[0] == 28: # timeout - change proxy
print "Tor timeout, need to change"
queue.put((a,b,c))
new_tor()
return
def new_tor():
# send_signal_for_new_ident_is_here
我在 7 个线程中启动此代码。
当线程收到错误 28 时,它会更改标识。但是碰巧所有 7 个线程都发送信号来更改标识。
如何做到这一点:
如果线程收到错误 28,那么它调用 new_tor() 并且其他 6 个线程不等待结果,然后它们才继续工作。这个怎么同步?