擅长:python、mysql、java
<p>我不确定<code>csvwriter</code>是否是线程安全的。<a href="https://docs.python.org/2/library/csv.html#writer-objects" rel="noreferrer">documentation</a>没有指定,因此为了安全起见,如果多个线程使用同一个对象,则应该使用<code>threading.Lock</code>来保护使用:</p>
<pre><code># 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()))
</code></pre>
<p>这就是说,对于<code>downloadThread</code>来说,将写任务提交给执行器,而不是像这样显式地使用锁,确实更为优雅。</p>