上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 54 下一页
摘要: 线程和进程一样也有信号量,一个资源在同一时刻只有规定数量的线程能使用。 阅读全文
posted @ 2018-10-25 21:17 aaronthon 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 死锁 说到死锁,可以讲一个科学家吃面的问题: 有几个科学家在一张桌子旁,桌子上只有一把筷子和一碗面,我们将面和筷子都加锁。这是可能会导致一个科学家抢到面,另一个科学家抢到筷子,这是就全部阻塞了,这就是死锁了。 如下代码: 打印结果: 看到小红拿到了面条,而小兰拿到了筷子,他们都需要对方拿到的资源来完 阅读全文
posted @ 2018-10-23 20:45 aaronthon 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 这段代码结果我们知道,因为GIL的原因,结果是0 再看如下代码: 打印结果却是9 为什么呢? 因为在0.1秒之内,所有线程肯定都进来了,但是需要睡0.1秒,这就是阻塞状态,他们会把手里的数据让给其他线程,所以每个线程的temp都是10,阻塞结束,10减1全变成9都写入内存,最终n的值就是9了,这样就 阅读全文
posted @ 2018-10-22 23:14 aaronthon 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 如下代码: 结果是:先打印 主线程结束,等十秒之后打印1 如下代码,加入守护线程: 结果是,只打印了 主线程结果,没打印子线程结果,也没等10秒,直接结束。 所以守护线程是随着主线程的结束而结束。 再看一个现象: 结果是,先打印 主线程结束,等3秒之后打印 子线程2 4 然后没有等待子线程1就直接结 阅读全文
posted @ 2018-10-22 22:43 aaronthon 阅读(146) 评论(0) 推荐(0) 编辑
摘要: import threading import time def func(n): time.sleep(0.5) n += 1 print(n, threading.current_thread(), threading.get_ident()) for i in range(10): threading.Thread(target=func, args... 阅读全文
posted @ 2018-10-21 16:25 aaronthon 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 我们使用高并发,一次是创建1万个线程去修改一个数并打印结果看现象: 我们可以看到,虽然是高并发,但是没有一条数据是重复的,为什么?因为Python解释器里面有全局解释器锁GIL,会让解释器每一时刻只有一个线程在运行,这样就保证了数据的安全了。 从这里我们也看出了,因为有全局解释器锁的存在就导致代码的 阅读全文
posted @ 2018-10-21 13:34 aaronthon 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 创建一个线程: 创建多线程: 一个进程中的线程数据是共享的: 另一种情况: 看到结果都变成一样的了,因为每个线程都将n的值变一次,不管变几次,n最终只有一个值,所在在0.1秒之后在输出n,都输出n的值了,就变成一样的了。 这种情况就会导致数据不安全,因为我不想要同一个输出结果,我想每个线程更改数据都 阅读全文
posted @ 2018-10-20 22:01 aaronthon 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 为什么有进程? 原来操作系统只能处理一件任务,有了进程就可以让操作系统处理多个任务。因为进程与进程之间是完全隔离的,涉及到了内存空间、数据的切换,所以就有了进程的概念。 已经有了进程,为什么还要线程? 线程有以下缺陷: 1,线程在同一时间只能干同一件事儿。 2,线程在执行任务的过程遇到阻塞,比如对等 阅读全文
posted @ 2018-10-19 11:46 aaronthon 阅读(781) 评论(0) 推荐(0) 编辑
摘要: 如下代码: 结果是 in func1 这是通过回调函数就可以执行func2了: 打印结果: 这回调函数的作用就是将函数func1的返回值传给func2,并执行func2函数,所以不能在pool.apply_async里面单独给func2传值,func2接受的参数就是func1的返回值。 判断func 阅读全文
posted @ 2018-10-18 21:37 aaronthon 阅读(3581) 评论(0) 推荐(0) 编辑
摘要: 进程池的同步,如下程序: 查看结果: 可以发现,变成了进程变成了同步得了,运行特别慢。 apply方法的作用就是将进程池的进程变成同步的。 将进程池变成异步的,使用apply_async就可以了,如下: 但是发现结果什么都没有,因为主进程没有等子进程的结束就执行完了。 如下优化,使用join就行了: 阅读全文
posted @ 2018-10-17 23:37 aaronthon 阅读(963) 评论(0) 推荐(0) 编辑
上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 54 下一页