我正在尝试爬过多个网页并收集数据。你知道吗
pool = multiprocessing.Pool(4, maxtasksperchild=1000)
ret = pool.map(get_data_for_somthing, some_list) #ret not useful
每个进程依次创建更多线程(使用线程API) 例如,如果web页面上有分页,那么将创建线程来同时访问每个页面(url)。你知道吗
所有进程都收集数据并转储到csv中(使用pandas)。单个CSV文件的大小不超过500KB。你知道吗
try:
dt = get_data_from_wb1(id, start=start, end=end)
nsdf = get_data_from_wb2(id, start=start, end=end)
if not nsdf.empty:
nsdf.drop("Label", axis=1, inplace=True)
nsdf.insert(0, "some_label", nsdf.index)
nsdf.insert(0, "id", id)
nsdf.columns = dbcols
nsdf["label_new"] = dt["label_new"]
nsedf.to_csv(path + variable + ".csv")
else:
raise Exception("returned null")
except Exception as e:
logger_map.get(multiprocessing.current_process().name, setup_logger()).error(variable+ " : " + vriable2 + " : " + str(e.args[0]))
上面的代码显示了每个进程所做的事情,并且在“getdata”函数中创建了更多的线程。你知道吗
我有i7四核的视窗。 那么我应该生成3个进程还是4个进程?作为一个主要的过程。你知道吗
主要问题:其中一个派生进程占用巨大内存(5GB),而其他进程占用大约100-200MB。为什么会这样?你知道吗
我不能把代码放在这里,所以请不要否决这个问题。但是有人能告诉我为什么一个进程占用这么多内存吗?你知道吗
您必须使工作进程产生一些调试输出才能回答您的问题。你知道吗
例如,使用
logging
模块记录线程的启动和完成时间、找到的URL数量、处理URL所需的时间。结果可能会让你有更多的问题。你知道吗可能有些页面包含指向自身的链接,将程序发送到一个无限循环中。你知道吗
相关问题 更多 >
编程相关推荐