这是项目中遇到的一个小需求,简单记一下。
python中的线程类模块Thread为伪多线程类,无法提高计算密集型任务的效率(加上PIL的调度时间,甚至会降低效率),而对于IO密集的任务,由于缩短了IO等待时间,的确能够提高效率,所以对于爬虫,可以使用Thread(/Threading)模块。而对于计算密集型的任务,我们可以考虑使用multiprocess模块,使用多进程实现多线程。
本文主要是将multiprocess的Process类继承后进行修改,使之满足项目需要。
项目需求:创建的Process类在开始执行和执行结束后给出提示。
class MyProcess(multiprocessing.Process):
def __init__(self,thread_name,**paramenters):
multiprocessing.Process.__init__(self,**paramenters)
self.name=thread_name
print 'thread %d is start'%thread_name
def __del__(self):
print 'thread %d is ok!'%self.name