线程安全性¶
每 libcurl thread safety documentation ,libcurl是线程安全的,但没有内部线程同步。
对于使用pycurl的python程序,这意味着:
当这个对象不涉及活动传输时,从不同的线程访问同一个pycurl对象是可以的,因为python内部有一个全局解释器锁,一次只能有一个操作系统线程执行python代码。
访问参与从python代码进行活动传输的pycurl对象 在所讨论的pycurl对象的libcurl回调中 可以,因为pycurl会取出适当的锁。
访问参与从python代码进行活动传输的pycurl对象 在所讨论的pycurl对象的libcurl回调之外 是不安全的。
PycURL为OpenSSL/libresl/BoringSSL、GnuTLS、NSS、mbedTLS和wolfSSL处理必要的SSL锁。
当libcurl使用标准的C库名称解析器(即非线程或C-ares解析器)时,会出现一种特殊情况。默认情况下,libcurl使用信号来超时C库解析器,而信号在多线程程序中不能正常工作。使用来自多个Python线程的pycurl对象时 NOSIGNAL
选项 must be given .