2019年1月14日

07 线程池回调函数

摘要: import time from threading import current_thread from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor def f1(n,s): return n+s def f2(n): print('回调函数>>>',n.result()) if __n... 阅读全文

posted @ 2019-01-14 15:53 =.=== 阅读(239) 评论(0) 推荐(0) 编辑

05 greenlet版协程

摘要: import time # import greenlet from greenlet import greenlet def f1(s): print('第一次f1'+s) g2.switch('taibai') #切换到g2这个对象的任务去执行 time.sleep(1) print('第二次f1'+s) g2.switch() def f2(s):... 阅读全文

posted @ 2019-01-14 15:52 =.=== 阅读(88) 评论(0) 推荐(0) 编辑

06 gevent版真正的协程

摘要: import gevent from gevent import monkey;monkey.patch_all() import time import threading def f1(): print('第一次f1') # print(threading.current_thread().getName()) # gevent.sleep(1) time.... 阅读全文

posted @ 2019-01-14 15:52 =.=== 阅读(87) 评论(0) 推荐(0) 编辑

03 线程池

摘要: import time from threading import current_thread from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor def f1(n,s): time.sleep(1) # print('%s号子线程'%current_thread().ident) ... 阅读全文

posted @ 2019-01-14 15:51 =.=== 阅读(68) 评论(0) 推荐(0) 编辑

04 生成器版协程

摘要: import time def f1(): for i in range(10): time.sleep(0.5) print('f1>>',i) yield def f2(): g = f1() for i in range(10): time.sleep(0.5) print('f2>... 阅读全文

posted @ 2019-01-14 15:51 =.=== 阅读(104) 评论(0) 推荐(0) 编辑

02 线程队列

摘要: import queue # 一:先进先出队列 # q = queue.Queue(3) #先进先出 fifo first in first out # q.put(1) # q.put(2) # # print('当前队列内容长度',q.qsize()) # q.put(3) # print('查看队列是否满了',q.full()) # try: # q.put_nowait... 阅读全文

posted @ 2019-01-14 15:50 =.=== 阅读(120) 评论(0) 推荐(0) 编辑

01 线程的其他方法

摘要: import threading import time from threading import Thread,current_thread def f1(n): time.sleep(1) print('子线程名称', current_thread().getName()) #Thread-1 print('%s号线程任务'%n) if __name__ ==... 阅读全文

posted @ 2019-01-14 15:50 =.=== 阅读(79) 评论(0) 推荐(0) 编辑

34 线程的其他方法 队列 线程池 协程

摘要: 今日内容: 1 线程的其他方法 2 线程队列 (重点) 3 线程池(重点) 4协程 生成器 Greenlet模块 Gevent模块(重点) 今日内容回顾: 线程的其他方法: Threading.current_thread() #当前线程对象 GetName() 获取线程名 Ident 获取线程id 阅读全文

posted @ 2019-01-14 15:48 =.=== 阅读(139) 评论(0) 推荐(0) 编辑

13 事件

摘要: import time from threading import Thread,Semaphore,Event # def func(): # sm.acquire() # print('get sm') # time.sleep(1) # sm.release() # if __name__ == '__main__': # # sm=Semapho... 阅读全文

posted @ 2019-01-14 15:47 =.=== 阅读(82) 评论(0) 推荐(0) 编辑

12 子进程不能input

摘要: from threading import Thread from multiprocessing import Process def f1(): name = input('请输入名字') #EOFError: EOF when reading a line # print(name) # if __name__ == '__main__': # inpu... 阅读全文

posted @ 2019-01-14 15:47 =.=== 阅读(209) 评论(0) 推荐(0) 编辑

10 gil解释

摘要: import time time.sleep(100) 阅读全文

posted @ 2019-01-14 15:46 =.=== 阅读(130) 评论(0) 推荐(0) 编辑

08 多线程的程序不结束多进程的程序不结束的区别

摘要: import time from threading import Thread from multiprocessing import Process #守护进程:主进程代码执行运行结束,守护进程随之结束 #守护线程:守护线程会等待所有非守护线程运行结束才结束 def f1(): time.sleep(2) print('1号线程') def f2(): tim... 阅读全文

posted @ 2019-01-14 15:45 =.=== 阅读(240) 评论(0) 推荐(0) 编辑

08 守护线程

摘要: import time from threading import Thread from multiprocessing import Process #守护进程:主进程代码执行运行结束,守护进程随之结束 #守护线程:守护线程会等待所有非守护线程运行结束才结束 def f1(): time.sleep(2) print('1号线程') def f2(): time... 阅读全文

posted @ 2019-01-14 15:45 =.=== 阅读(97) 评论(0) 推荐(0) 编辑

05 锁 同步 互斥锁

摘要: from multiprocessing import Queue import queue import time from threading import Lock,Thread num = 100 def f1(loc): # num -= 1 loc.acquire() global num # num -= 1 tmp = num t... 阅读全文

posted @ 2019-01-14 15:44 =.=== 阅读(109) 评论(0) 推荐(0) 编辑

06 死锁现象

摘要: import time from threading import Thread,Lock,RLock def f1(locA,locB): locA.acquire() print('f1>>1号抢到了A锁') time.sleep(1) locB.acquire() print('f1>>1号抢到了B锁') locB.release() ... 阅读全文

posted @ 2019-01-14 15:44 =.=== 阅读(69) 评论(0) 推荐(0) 编辑

07 递归锁

摘要: import time from threading import Thread, Lock, RLock def f1(locA, locB): # print('xxxx') # time.sleep(0.1) locA.acquire() print('f1>>1号抢到了A锁') time.sleep(1) locB.acquire() ... 阅读全文

posted @ 2019-01-14 15:44 =.=== 阅读(93) 评论(0) 推荐(0) 编辑

04 多进程和多线程的效率对比

摘要: import time from threading import Thread from multiprocessing import Process def f1(): # time.sleep(1) #io密集型 # 计算型: n = 10 for i in range(10000000): n = n + i if __name__... 阅读全文

posted @ 2019-01-14 15:43 =.=== 阅读(393) 评论(0) 推荐(0) 编辑

02 查看线程的进程id

摘要: import os from threading import Thread # from multiprocessing import Process def f1(n): print('1号',os.getpid()) print('%s号线程任务'%n) def f2(n): print('2号',os.getpid()) print('%s号线程任务'%n... 阅读全文

posted @ 2019-01-14 15:42 =.=== 阅读(209) 评论(0) 推荐(0) 编辑

03 验证线程是数据共享的

摘要: import os import time from threading import Thread # from multiprocessing import Process #通过对全局变量的修改来验证线程之间是数据共享的,共享同一进程中的数据 num = 100 def f1(n): # time.sleep(3) global num num = 3 p... 阅读全文

posted @ 2019-01-14 15:42 =.=== 阅读(89) 评论(0) 推荐(0) 编辑

01 线程的两种创建方式

摘要: from threading import Thread # from multiprocessing import Process # def f1(n): # print('%s号线程任务'%n) # def f2(n): # print('%s号线程任务'%n) # if __name__ == '__main__': # t1 = Thread(target=f1... 阅读全文

posted @ 2019-01-14 15:41 =.=== 阅读(103) 评论(0) 推荐(0) 编辑

导航