05-09补 线程

for 循环打印原理与顺序:

1、验证实例:

for i in range(1,11)
    print(i)
print('我是主进程')

应:循环遍历完i后再执行主进程语句 ;

prime number 素数
判断1~100之间的素数:

方法1:
def isprime(m):
for i in range(2,m):
if m%i==0:
print(‘m 不是素数’) #这里return ‘mbu是素数’ 也可以
#如果遍历完小于m的除数,还无一个满足余数为0的除数,表明m是素数,直接返回
print(‘m是素数’)

#再将1-100之间的数遍历放进去判断是否满足条件
if name == ‘main’:
print filter(isprime,range(2,101))

方法二: 用线程

import threading
rs = []
lock = threading.Lock()
class Isprime(threading.Thread):
    def __init__(self,num,name=None):
        threading.Thread.__init__(self)
            self.num=num
       self.isstop = False
    def run(self):
        global rs,lock
        isprime = False
        m=self.num
        for i in range(2,m):
            if m % i ==0:
                isprime = True
                break
        lock.acquire()
        if not isprime:
                rs.append(m)
        lock.rlease()

def main():
    global rs
threads = []
    for i in range(2,101):
        threads.append(Isprime(i))
    for x in threads:
        x.start()
    for s in threads:
        s.join()

    print rs
    print len(rs)

if __name__ == '__main__':
   main()

线程实例2:
class Thread(threading.Thread): #实现多线程代码的可复用性,封装成类 class ,继承threading模块的thread类


```go
  def __init__(self,num)
        threading.Thread.__init__(self) # 父类属性
        self._num=num
        self.setDaemon(True)  #设置子线程为守护线程,必须再 start() 之前运行,作用:即使子线程没有结束,只要主进程运行

                                                    #完毕,子线程也会被kill; 防止程序被永久挂起
                                                    python 3.0版本好像没有了
    def run(self):
        global total,multex    
        print threading.currentThread().getName()
        for x in range(0,int(self.num)):
            multex.acquire()         #并发(排队执行)运算各线程之间通信需要非常小心,尤其写入文件,操作全局变量;
            total +=1                         #锁机制保证各线程之间正常运转
            if total==3000:           
                print  'now',total
                raw_input('> 暂停一会,按任意键继续:')
              mlutex.release()
if __name__ =="__main__":
    global total,multex
    total=0
    multex=threading.Lock()
    threads=[]                     #创建线程池,批量管理子线程
    for x in range(0,40):
        threads.append(Thread(100))  初始化Thread类并添加进线程池;
    for t in threads:
        t.start()
        t.join()          #join()  子线程完成之前主进程处于闭塞状态,待全部子线程完成后再运行
    print(total)

注释:

1、GIL:(interperter)将并发 运行变成 串行,(同一时刻同一进程内只有一个线程被执行)控制同一时间内共享数据只能被一个任务所修改,保证数据安全;

2、python的每个进程内有主线程、主线程开启的其他线程,解释器开启的垃圾回收等级别的线程,所有

  线程运行再同一各进程内,所有数据都是共享的;

3





1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值