通过Python的「threadpool」模块进行多线程处理数据。
# 定义了一个线程池,最多可以创建60个线程
pool = threadpool.ThreadPool(60)
# 调用makeRequests创建了要开启多线程的函数,以及函数相关参数和回调函数
requests = threadpool.makeRequests(some_callable, list_of_args)
# 将所有要运行多线程的请求扔进线程池
[pool.putRequest(req) for req in requests]
# 等待所有的线程完成工作后退出
pool.wait()
但是在将处理完的数据写入到文件的过程中,文件出现了少量残缺混乱的数据这一个情况。然后,根据网上的资料知道了解决办法。
from multiprocessing import Pool
import time
# 在Callback中负责将数据写入
def mycallback(x):
with open('123.txt', 'a+') as f:
f.writelines(str(x))
# 执行函数
def sayHi(num):
return num
if __name__ == '__main__':
e1 = time.time()
# 可以设置线程数量
pool = Pool()
for i in range(10):
pool.apply_async(sayHi, (i,), callback=mycallback)
pool.close()
pool.join()
e2 = time.time()
print float(e2 - e1)