问题
python多线程时并发并非并行,线程之间并非严格遵守顺序,这就会造成线程不安全的情况,例如print是自动添加换行的,在换行时可能线程不安全,导致换行和下一句输出发生混乱
解决办法
手动输入换行符,例如print(url+'\n',end='')
,以空字符结尾,在输出内容后面主动加入换行符,这样就不会存在错位的问题。对 print() 加锁_print = print
mutex = threading.Lock()
def print(text, *args, **kw):
‘’’
使输出有序进行,不出现多线程同一时间输出导致错乱的问题。
‘’’
with mutex:
_print(text, *args, **kw)