python多线程没用_为什么我无法在python中加入该线程?
我正在编写一个多线程类.该类具有parallel_process()函数,该函数被并行任务覆盖.要处理的数据放入队列中.每个线程中的worker()函数一直调用parallel_process(),直到队列为空.结果放入结果队列对象中.类的定义是:
import threading
try:
from Queue import Queue
except ImportError:
from queue import Queue
class Parallel:
def __init__(self, pkgs, common=None, nthreads=1):
self.nthreads = nthreads
self.threads = []
self.queue = Queue()
self.results = Queue()
self.common = common
for pkg in pkgs:
self.queue.put(pkg)
def parallel_process(self, pkg, common):
pass
def worker(self):
while not self.queue.empty():
pkg = self.queue.get()
self.results.put(self.parallel_process(pkg, self.common))
self.queue.task_done()
return
def start(self):
for i in range(self.nthreads):
t = threading.Thread(target=self.worker)
t.daemon = False
t.start()
self.threads.append(t)
def wait_for_threads(self):
print('Waiting on queue to empty...')
self.queue.join()
print('Queue processed. Joining threads...')
for t in self.threads:
t.join()
print('...Thread joined.')
def get_results(self):
results = []
print('Obtaining results...')
while not self.results.empty():
results.append(self.results.get())
return results
我用它来创建一个并行任务:
class myParallel(Parallel): # return square of numbers in a list
def parallel_process(self, pkg, common):
return pkg**2
p = myParallel(range(50),nthreads=4)
p.start()
p.wait_for_threads()
r = p.get_results()
print('FINISHED')
但是,每次运行代码时,所有线程都不会加入.有时只有2个联接,有时没有线程联接.我认为我不会阻止线程完成工作.为什么join()在这里不起作用是什么原因?
python多线程没用_为什么我无法在python中加入该线程?相关推荐
- python多线程原理_代码详解Python多线程、多进程、协程-阿里云开发者社区
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 一.前言 很多时候我们写了一个爬虫,实现了需求后会发现了很多值得改进的地方,其中很重要的一点就是爬 ...
- python 多线程并发_寻找python大神!!!python如何多线程并发?
不是大神.尝试回答一下. 首先解释下什么叫做线程,什么叫做进程,在解释这两个概念前,我们还需要明白什么叫做GIL全局解释器锁.GIL 全局解释器锁: GIL(全局解释器锁,GIL 只有cpython有 ...
- python多线程没用_Python 的多线程原来不是真的多线程啊
55 2019-11-23 00:43:59 +08:00 1 所以这些 CS 导论就该明确方向的系列问题怎么还那么经-- 还是得从基础概念入手. https://stackoverflow.com/ ...
- 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...
话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...
- python做运动控制_第一课:用Python操控小龟小车运动
欢迎来到小龟的课堂,今天我们讲如何用小龟小车的车载Python控制小车运动. 如果小伙伴还不会使用小龟小车的Python编辑器的话,可以阅读这篇教程<如何使用小龟小车的Python编辑器> ...
- print python excel分隔_合并/拆分 Excel?Python、VBA轻松自动化
作者 | Ryoko 来源 | 凹凸数据 当你收集了 n 个人的 EXCEL 记录表,需要将它们汇成一个总表时你会怎么做呢? 如果不通过技术手段,要一个个打开再复制粘贴也太麻烦了吧! 此时就需要一个通 ...
- python深度爬虫_总结:常用的 Python 爬虫技巧
用python也差不多一年多了,python应用最多的场景还是web快速开发.爬虫.自动化运维:写过简单网站.写过自动发帖脚本.写过收发邮件脚本.写过简单验证码识别脚本. 爬虫在开发过程中也有很多复用 ...
- 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导
爬虫是大家公认的入门Python最好方式,没有之一.虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就能实现基本的爬虫,零基础也能快速入门,让新手小白体会更大的成 ...
- cv2 python 多线程调用摄像头_2种方法用python调用cv2模块给图片打马赛克
1 说明: ===== 1.1 因各种需要,给图片打马赛克,当然本人着重介绍python用cv2的方法,主要讲解python和cv2的相关编程知识. 1.2 cv2模块:是OpenCV的python调 ...
最新文章
- 敏捷估算和计划的12条知道原则
- 深入浅出解释FFT(六)——深入理解fft变换
- 解决fstream不能打开带有中文路径文件的问题
- symantec 5220牛刀小试系列(二)
- Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月1日-1月6日)
- 简单介绍下我使用了一年多还不知道的Sql server 2005 组件知识
- ubuntu下安装jdk1.6.0_41
- iPhone 13高端版所需120Hz刷新率屏幕或将由三星独家供应
- 中小学生Python课应该学什么
- SDN/NFV在演进中探寻路径
- android 调出键盘表情_keyboard dialog 仿微博表情键盘输入框,keyboarddialog
- mysql 左连接写法_mysql左连接复杂正确写法
- 5x2cv配对t检验(5x2cv paired t test)
- P、NP、NPC问题
- iOS 开发: 仿QQ
- 填坑—c语言写单片机中断程序无法返回到中断点—解决办法
- 校招进大厂的Tips
- Excel学习日记:L27-数据重复怎么办
- GPS-Uber:一个用于预测一般和e3特异性赖氨酸泛素化位点的混合学习框架
- Mac OS X常用软件介绍