【发布时间】:2017-04-10 21:47:34
【问题描述】:
我对 python 非常陌生,我一直在研究一个脚本,它可以解析任何给定目录中的 csv 文件。在我实现了一个队列和线程之后,我一直被困在线程没有接受新工作的问题上,即使队列中还有项目。例如,如果我将最大线程数指定为 3,并且队列中有 6 个项目,则线程会提取 3 个文件,处理它们,然后无限期地挂起。我可能只是在概念上误解了多线程过程。
预计到达时间: 出于安全原因,部分代码已被删除。
q = Queue.Queue()
threads = []
for file in os.listdir(os.chdir(arguments.path)):
if (file.endswith('.csv')):
q.put(file)
for i in range(max_threads):
worker = threading.Thread(target=process, name='worker-{}'.format(thread_count))
worker.setDaemon(True)
worker.start()
threads.append(worker)
thread_count += 1
q.join()
def process():
with open(q.get()) as csvfile:
#do stuff
q.task_done()
【问题讨论】:
标签: multithreading python-3.x python-multithreading