python进程同步,condition例子】的更多相关文章

python多线程简单例子 作者:vpoet mail:vpoet_sir@163.com import thread def childthread(threadid): print "I am child thread",threadid def parentthread(): i=0 while 1: i+=1 thread.start_new_thread(childthread,(i,)) if raw_input()=='q': break parentthread() 运…
Python 发邮件例子 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12:33 # @Author : BenLam # @Link : https://www.cnblogs.com/BenLam/ import smtplib from email.mime.text import MIMEText from email.header import Header from email.mi…
python gevent使用例子 from gevent.pool import Pool POOL_SIZE = 100 def process(func, param1_list, param2_list) stat = {} pool = Pool(POOL_SIZE) results = pool.imap_unordered(func, param1_list, param2_list) pool.join() # 处理结果 for value in results: stat.up…
#coding=utf-8import multiprocessing as mpimport time def consumer(cond):    with cond:        print "consumer before wait"        cond.wait()        print "consumer after wait" def producer(cond):    with cond:        print "produ…
最近用到随机数,就查询资料总结了一下Python random模块(获取随机数)常用方法和使用例子. 1.random.random  random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 2.random.uniform random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限. 如果a < b,则生成的随机数n: b>= n >= a. 如果 a >b,则生成的随机数n: a…
pbr的介绍不多,http://ju.outofmemory.cn/entry/156745 $ mkdir entry_test; cd entry_test; git init $ mkdir  -p mypackage/api/v1/ $ touch mypackage/__init__.py; touch mypackage/api/__init__.py; touch mypackage/api/v1/__init__.py; $ tree mypackage .├── mypacka…
55.学习使用按位取反~. 程序分析:~0=1; ~1=0; (1)先使a右移4位. (2)设置一个低4位全为1,其余全为0的数.可用~(~0<<4) (3)将上面二者进行&运算. #python3.7 if __name__ == '__main__': a = 234 b = ~a print('The a\'s 1 complement is %d' % b) a = ~a print('The a\'s 2 complement is %d' % a) 56.画图,学用circ…
16.一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. 程序分析:请参照程序Python 100例中的第14个例子 #python3.7 from sys import stdout for j in range(2, 1001): k = [] n = -1 s = j for i in range(1, j): if j % i == 0: n += 1 s -= i k.append(i) if s == 0: print…
13.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位. #python3.7 import math for n in range(100,1000): i = math.floor(n / 100)#百位数 j = math.floor((n -…
  简单的soket例子 Python 2.0 客户端服务端传输 1.可发字符串,可发字节 bys类型 Python 3.0 客户端服务端传输 1.只能发bys,比特流的类型. 2.bys类型只能接收 ASCLL码里的数据类型. 3.如果想传入中文: 简单的soket链接例子 需求:服务端帮客户端处理字符串信息为大写 客户端 #客户端 import socket #声明协议类型,同事生成socket连接对象 client = socket.socket() #链接地址和端口,元组(本地,端口)…
python中_thread模块是一个低级别的多线程模块,它的问题在于主线程运行完毕后,会立马把子线程给结束掉,不加处理地使用_thread模块是不合适的.这里把书中讲述的有关_thread使用的例子自己实现了一遍,做以记录. #例子一:自己手动在主线程中设置等待时间import _thread from time import ctime, sleep def loop0(): print("loop0 starts at:{}".format(ctime())) sleep(4)…
Condition常用于生产者.消费者模型,为了解决生产者消费者速度匹配问题. 构造方法Condition(lock=None),可以传入一个Lock或RLock对象,默认RLock. 方法: acquire(*args)  获取锁 release()     释放锁 wait(timeout=None)  等待通知或直到发生超时 notify(n=1)  唤醒至多指定个数的等待的线程,没有等待的线程就没有任何操作 notify_all()  唤醒所有等待的线程.wake up 以下例子,不考虑…
Python手册上有个例子,用于输出10以内的斐波那契序列.代码如下: a, b = 0, 1 while b < 10: print(b) a, b = b, a+b 用到了一些Python的特性. 研究后解释下 第一行, a, b = 0, 1 赋值多个变量.等价 a = 0 , b = 1 第四行,a, b = b, a+b , 相当于 a=b , b = a+b 分析下执行过程 第一次循环 a = 0, b = 1 输出 b为1, 并计算后a = 1,b = 1 第二次循环 输出b为1,…
>>> def counter(a=0): ... count = a ... def incr(): ... b = 1 + count ... return b ... return incr ... >>> count = counter(5) >>> print count() 6 >>> print count() 6 >>> >>> def counter(start_at=0): ..…
Condition Condition(条件变量)通常与一个锁关联.需要在多个Contidion中共享一个锁时,可以传递一个Lock/RLock实例给构造方法,否则它将自己生成一个RLock实例. 可以认为,除了Lock带有的锁定池外,Condition还包含一个等待池,池中的线程处于状态图中的等待阻塞状态,直到另一个线程调用notify()/notifyAll()通知:得到通知后线程进入锁定池等待锁定. 构造方法: Condition([lock/rlock]) 实例方法: acquire([…
91.时间函数举例1. #!/usr/bin/python #coding=utf-8 import time if __name__ == '__main__': #time.time()返回当前的时间戳(1970纪元后经过的浮点秒数) print(time.time()) #time.ctime()把时间戳转化为time.asctime()的形式 print(time.ctime(time.time())) #time.asctime()返回"Tue Feb 26 09:12:37 2019…
85.输入一个奇数,然后判断最少几个 9 除于该数的结果为整数. 程序分析:999999 / 13 = 76923. #!/usr/bin/python #coding=utf-8 if __name__ == '__main__': zi = int(input('输入一个数字:\n')) n1 = 1 c9 = 1 m9 = 9 sum = 9 while n1 != 0: if sum % zi == 0: n1 = 0 else: m9 *= 10 sum += m9 c9 += 1 p…
79.字符串排序. #python3.7 if __name__ == '__main__': str1 = input('Input string:\n') str2 = input('Input string:\n') str3 = input('Input string:\n') print(str1, str2, str3) if str1 > str2 : str1, str2 = str2, str1 if str1 > str3 : str1, str3 = str3, str1…
73.反向输出一个链表. #python3.7 if __name__ == '__main__': ptr = [] for i in range(5): num = int(input('Please input a number:\n')) ptr.append(num) print(ptr) ptr.reverse() print(ptr) 74.列表排序及连接. #python3.7 if __name__ == '__main__': a = [1, 2, 3] b = [3, 4,…
67.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组. #python3.7 def inp(numbers): for i in range(6): numbers.append(int(input('输入一个数字:\n'))) p = 0 def arr_max(array): max = 0 for i in range(1, len(array) - 1): p = 1 if array[p] > array[max] : max = p k = max array…
61.打印出杨辉三角形. #python3.7 from sys import stdout if __name__ == '__main__': a = [] for i in range(10): a.append([]) for j in range(10): a[i].append(0) for i in range(10): a[i][0] = 1 a[i][i] = 1 for i in range(2,10): for j in range(1,i): a[i][j] = a[i…
49.使用lambda来创建匿名函数. #python3.7 MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y MINIMUM = lambda x,y : (x > y) * y + (x < y) * x if __name__ == '__main__': a = 10 b = 20 print('The larger one is %d' % MAXIMUM(a, b)) print('The lower one is %d'…
43.模仿静态变量(static)另一案例. 程序分析:演示一个python作用域使用方法. #python3.7 class Num: nNum = 1 def inc(self): self.nNum += 1 print('nNum = %d' % self.nNum) if __name__ == '__main__': nNum = 2 inst = Num() for i in range(3): nNum += 1 print('The num = %d' % nNum) inst…
37.对10个数进行排序. 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换. #python 3.7 if __name__ == '__main__': N = 10 print('请输入10个数字:\n') l = [] print for i in range(N): l.append(int(input('请输入一个数字:\n'))) print for i in range(N): print(l[i…
31.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. letter = input('Please input:') if letter == 'S': print('Please input second letter:') letter = input('Please input:') if letter == 'a': print('Saturday') el…
25.求1+2!+3!+...+20!的和. 程序分析:此程序只是把累加变成了累乘. #python3.7 n = 0 s = 0 t = 1 for n in range(1, 21): t *= n s += t print('1! + 2! + 3! + ... + 3! + 20! = %d' % s) 结果: 1! + 2! + 3! + ... + 3! + 20! = 2561327494111820313 26.利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! #p…
7.将一个列表的数据复制到另一个列表中. 程序分析:使用列表[:]. #python3.7 #适用于简单列表(即列表中都是基本的元素) a1 = [1,2] b1 = a1[:] print(b1) #不适合列表中包含列表的情况,如果要复制的列表中包含列表,只会复制那个列表的列表的引用 a2 = [1,[2,3]] b2 = a2[:] a2[1].append(4) print(a2) print(b2) #此时b2复制的只是a2中[2,3]的引用 结果: [1, 2] [1, [2, 3,…
1.有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #本人的运行环境为python3.7 count = 0 for i in range(1,5): for j in range(1,5): for k in range(1,5): count+=1 print(i,j,k) print(‘Total:’,count) 2.企业发放的奖金根据利润提成.利润(I…
import time import threading # 吃火锅鱼丸 guo = [] suo = threading.Condition() #条件锁 # 生产者负责生产 class Produce(threading.Thread): def __init__(self): super().__init__() def run(self): suo.acquire() #先锁住 while True: time.sleep(1) guo.append("鱼丸") print(&…
一.TCP 通信 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # server_tcp.py import socket so = socket.socket() so.bind(('127.0.0.1', 8080)) so.listen() while True: conn, addr = so.accept() while True: ret = conn.recv(1024).decode('utf-8') print(ret) i…