python学习之基础篇(多进程)9.1

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200214225601831.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dvbmdyYW5y,size_16,color_FFFFFF,t_70

import  threading
import  time

def f(i):
    time.sleep(0.1)
    print(i)

def main():
    for i in range(1,10):
        t = threading.Thread(target = f, args=(i,))
        t.setDaemon(True)
        t.start()
main()
print("exit\n")

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

上面这个多线程的代码如下:

import  threading
import  time

def f(i):
    time.sleep(0.1)
    print(i)

def main():
    threads=[]
    for i in range(1,10):
        t = threading.Thread(target = f, args=(i,))
        t.setDaemon(True)
        t.start()
        threads.append(t)
    for th in threads:
        th.join()
main()
print("exit\n")

在这里插入图片描述

import threading
## 按理说程序应当

count = 0

def f(i):
    global count
    for _ in range(1000000):
        count +=1
    print("%s" % threading.currentThread().getName(),count)

ls = []
for i in range(3):
    t = threading.Thread(target=f,args=(i,))
    ls.append(t)
    t.start()
    for th in ls:
        th.join()

above output:

在这里插入图片描述

指令锁

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

above code

import threading
import time
lock = threading.Lock()
count = 0
def f(i):
    global count
    if(lock.acquire()):
        print("%saleardy acquire" % threading.currentThread().getName())
        for _ in range(1000000):
            count += 1
        lock.release()
        print("%sreleased lock" % threading.currentThread().getName())

if __name__ == "__main__":
    start = time.time()
    ls = []
    for i in range(3):
        t = threading.Thread(target = f, args = (i,))
        ls.append(t)
        t.start()
    for th in ls:
        th.join()
发布了11 篇原创文章 · 获赞 0 · 访问量 188

猜你喜欢

转载自blog.csdn.net/gongranr/article/details/104321460