我不确定是否csvwriter
是线程安全的。该文档未指定,因此为了安全起见,如果多个线程使用同一个对象,则应使用来保护用法threading.Lock
:
# create the lock
import threading
csv_writer_lock = threading.Lock()
def downloadThread(arguments......):
# pass csv_writer_lock somehow
# Note: use csv_writer_lock on *any* access
# Some code.....
with csv_writer_lock:
writer.writerow(re.split(',', line.decode()))
话虽如此downloadThread
,将写任务提交给执行者可能确实更优雅,而不是像这样显式地使用锁。