Python 多线程

网友投稿 240 2022-09-18

Python 多线程

import queueimport threadingimport timeclass WorkManager: def __init__(self): self.done_work = [] self.target_work = queue.Queue() def isEmpty(self): return self.target_work.empty() def getNewWork(self): return self.target_work.get() def addNewWork(self, newWork): if newWork in self.done_work: pass else: self.done_work.append(newWork) self.target_work.put(newWork) def addDoneWork(self, doneWork): self.done_work.append(doneWork)class DoWork(threading.Thread): def __init__(self, workManager, name): threading.Thread.__init__(self) self.workManager = workManager self.name = name def run(self): while not self.workManager.isEmpty(): target = self.workManager.getNewWork() print('%s do the work:%d' % (self.name, target)) time.sleep(1)if __name__ == '__main__': need_to_do_array = [1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 9, 10] workManager = WorkManager(); for i in range(len(need_to_do_array)): workManager.addNewWork(need_to_do_array[i]) start_time = time.time() all_thread_work = [] for i in range(5): t = DoWork(workManager, "name_%d" % i) all_thread_work.append(t) for i in range(len(all_thread_work)): all_thread_work[i].start() for i in range(len(all_thread_work)): all_thread_work[i].join() end_time = time.time() used_time = end_time - start_time print(used_time)

1.总结下,就是要继承Thread,然后run一下就可以。 可以看到5个线程,本来要10秒的工作,2秒就做完了。​​

​​python全栈开发​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:pycharm 调试 scrapy
下一篇:mongo 数据备份用户名加密码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~