这适用于 Python 3.x
我正在从 CSV 文件中以 300 个块为单位加载记录,然后生成工作线程以将它们提交给 REST API。我将 HTTP 响应保存在队列中,以便在处理整个 CSV 文件后获得跳过记录数的计数。但是,在我向我的工作人员添加一个队列之后,线程似乎不再关闭。我想监视线程数有两个原因:(1) 一旦全部完成,我可以计算并显示跳过计数;(2) 我想增强我的脚本以生成不超过 20 个左右的线程,所以我不要耗尽内存。
我有两个问题:
q.put()吗?这是我的代码(有些简化,因为我无法分享我正在调用的 API 的确切细节):
import requests, json, csv, time, datetime, multiprocessing
TEST_FILE = 'file.csv'
def read_test_data(path, chunksize=300):
leads = []
with open(path, 'rU') as data:
reader = csv.DictReader(data)
for index, row in enumerate(reader):
if (index % chunksize == 0 and index > 0):
yield leads
del leads[:]
leads.append(row)
yield leads
def worker(leads, q):
payload = {"action":"createOrUpdate","input":leads}
r = …Run Code Online (Sandbox Code Playgroud) python queue multithreading python-3.x python-multiprocessing