zoukankan      html  css  js  c++  java
  • 多进程记录

    # -*- coding:utf-8 -*-
    import threading,time
    #通过获取锁对象,访问共有数据,最后释放锁来完成一次操作,
    # 一旦某个线程获取了锁,当这个线程被切换时,下个个进程无法获取该公有数据
    def func():
        #开始处理数据
        global n
        lock.acquire() #获取
        a=n+1
        time.sleep(0.00001)
        n =a
        lock.release() #释放
        # 结束处理
        print(n)
    
    if __name__ == '__main__':
        n=0
        lock=threading.Lock()
        li =[]
        start_time = time.time()
        for i in range(500):
            t=threading.Thread(target=func,args=())
            li.append(t)
            t.start()
        for i in li:
            i.join()  #等待子线程全部执行完
        end_time = time.time()-start_time
        print(n,end_time)  #1000
    # -*- coding:utf-8 -*-
    import threading
    import time, random
    def eating():
        print("我饿了-0-")
        event.wait()
        print('去吃饭的路上...')
    
    def makeing():
        print('做饭中...')
        time.sleep(random.randint(1,2))
        print('做好了,快来!')
        event.set()
    
    
    if __name__ == '__main__':
        event=threading.Event()
        t1 = threading.Thread(target=eating)
        t2 = threading.Thread(target=makeing)
        t1.start()
        t2.start()
    
        # 做饭中
        # 做好了,快来...
        # 去吃饭的路上...

    11

    # -*- coding:utf-8 -*-
    import threading,time
    
    def func():
        #开始处理数据
        global n   #可以改变函数外的变量
        a=n+1
        time.sleep(0.0001)
        n =a
        # 结束处理
    
    if __name__ == '__main__':
        n=0
        li =[]
        for i in range(1000):
            t=threading.Thread(target=func,args=())
            li.append(t)
            t.start()
            print(n)  #可能有多个线程同时拿到同一个值,所以会出现大量重复值,这就需要为数据进行加锁
    
        for i in li:
            i.join()  #等待子线程全部执行完,1000个子线程
        print("n:",n)  #155


  • 相关阅读:
    java并发AtomicIntegerArray
    java并发:原子类之AtomicLong
    java并发:初探消费者和生产者模式
    java并发:初探用户线程和守护线程
    java并发:interrupt进程终止
    java并发:join源码分析
    java并发:初探sleep方法
    java并发(二):初探syncronized
    java并发(一):初探线程的创建
    Git 操作
  • 原文地址:https://www.cnblogs.com/python-kp/p/12163068.html
Copyright © 2011-2022 走看看