python 线程管理,python35怎样控制线程的数量

1,python35怎样控制线程的数量你把各种原因解决掉就可以了python内部不存在你说的这种方法.pool = threadpool.threadpool(poolsize)poolsize这里来控制线程数量有线程池就可以控制
2,python中如何创建并开启一个线程使用线程池:threadpool 模块 。这是一个第三方模块 , 可以通过下面方法安装:easy_install threadpoola=[]a.add("1")a.add("hi")print a##结果: ["1","hi"]
3 , python 怎么对多个线程进行控制pool = threadpool.threadpool(poolsize)poolsize这里来控制线程数量有线程池就可以控制一般来说,多线程模式下 , 建议主线程只处理线程本身的调度,不去处理具体业务 。通常在创建线程后,join等待所有线程退出 。就题主的问题,可以创建线程一、二之后,主线程等待线程一退出,之后用sys.exit退出 。【python 线程管理,python35怎样控制线程的数量】
4,Python中threading的join和setDaemon的区别及用法python中得thread的一些机制和C/C++不同:在C/C++中,主线程结束后,其子线程会默认被主线程kill掉 。而在python中,主线程结束后,会默认等待子线程结束后,主线程才退出 。python对于thread的管理中有两个函数:join和setDaemonjoin:如在一个线程B中调用threada.join(),则threada结束后,线程B才会接着threada.join()往后运行 。setDaemon:主线程A启动了子线程B,调用b.setDaemaon(True),则主线程结束时,会把子线程B也杀死 , 与C/C++中得默认效果是一样的 。在这里给出一个例子:#! /usr/bin/env pythonimport threadingimport timeclass myThread(threading.Thread):def __init__(self, threadname):threading.Thread.__init__(self, name=threadname)self.st = 2def run(self):time.sleep(self.st)print self.getName()def setSt(self, t):self.st = t def fun1():t1.start()print "fun1 done"def fun2():t2.start()print "fun2 done"t1=myThread("t1")t2=myThread("t2")t2.setSt(10);# t2.setDaemon(True)fun1()fun2()print "now u will see me"5 , python threading 一定要 join 吗Join的作用是众所周知的,阻塞进程直到线程执行完毕 。通用的做法是我们启动一批线程,最后join这些线程结束 , 例如:123456789fori inrange(10): t =ThreadTest(i) thread_arr.append(t) fori inrange(10): thread_arr[i].start() fori inrange(10): thread_arr[i].join() 此处join的原理就是依次检验线程池中的线程是否结束,没有结束就阻塞直到线程结束,如果结束则跳转执行下一个线程的join函数 。而py的join函数还有一个特殊的功能就是可以设置超时,如下:1 Thread.join([timeout]) Wait until the thread terminates. This blocks the calling thread until the thread whose join() method is called terminates – either normally or through an unhandled exception – or until the optional timeout occurs.也就是通过传给join一个参数来设置超时,也就是超过指定时间join就不在阻塞进程 。而在实际应用测试的时候发现并不是所有的线程在超时时间内都结束的,而是顺序执行检验是否在time_out时间内超时 , 例如,超时时间设置成2s,前面一个线程在没有完成的情况下 , 后面线程执行join会从上一个线程结束时间起再设置2s的超时 。python中得thread的一些机制和c/c++不同:在c/c++中,主线程结束后 , 其子线程会默认被主线程kill掉 。而在python中 , 主线程结束后,会默认等待子线程结束后,主线程才退出 。python对于thread的管理中有两个函数:join和setdaemonjoin:如在一个线程b中调用threada.join(),则threada结束后,线程b才会接着threada.join()往后运行 。setdaemon:主线程a启动了子线程b,调用b.setdaemaon(true),则主线程结束时 , 会把子线程b也杀死,与c/c++中得默认效果是一样的 。在这里给出一个例子:#! /usr/bin/env pythonimport threadingimport timeclass mythread(threading.thread):def __init__(self, threadname):threading.thread.__init__(self, name=threadname)self.st = 2def run(self):time.sleep(self.st)print self.getname()def setst(self, t):self.st = t def fun1():t1.start()print "fun1 done"def fun2():t2.start()print "fun2 done"t1=mythread("t1")t2=mythread("t2")t2.setst(10);# t2.setdaemon(true)fun1()fun2()print "now u will see me"

    推荐阅读