#第二题,做一个加减乘除的考试系统,自动出题,自动判对错,并统计结果,一次考试10道题
import random
symbols=["+","-","*","/"] total_count=0
correct_count=0
incorrect_count=0 while 1:
random_number1=random.randint(0,11)
random_number2=random.randint(0,11)
random_symbol=random.choice(symbols) if random_symbol=="/" and random_number2==0:
continue
elif random_symbol=="/" and random_number1%random_number2 !=0:
continue expression=str(random_number1)+" "+random_symbol+" "+str(random_number2)
answer=eval(expression) print expression,"= ",
while 1:
try:
user_answer=int(raw_input(""))
break
except:
print "input is not a number,try again" if user_answer==answer:
print "your answer is right"
correct_count+=1
total_count+=1
else:
print "your answer is wrong,the right answer is %s" %answer
incorrect_count+=1
total_count+=1
if total_count==3:
break print "correct answer is %s" %correct_count
print "incorrect answer is %s" %incorrect_count #第三题:计算一个二维矩阵的正对角线、反对角线、周边数之和
a=[ [1,2,3],
[4,5,6],
[7,8,9]
] #遍历正对角线
count=0
for i in range(len(a)):
for j in range(len(a[0])):
if i==j:
count+=a[i][j]
print count #遍历反对角线
#[0][2]
#[1][1]
#[2][0]
count=0
column=len(a[0])-1
for i in range(len(a)):
count+=a[i][column-i]
print count #周边元素和
#[0][0]
#[0][1]
#[0][2]
#[1][0]
#[1][2]
#[2][0]
#[2][1]
#[2][2]
count=0
for i in range(len(a)):
for j in range(len(a[0])):
if i==0 or i==len(a)-1 or j==0 or j==len(a[0])-1:
print i,j
count+=a[i][j]
print count #练习:加锁
from multiprocessing import Process,Lock
import time
def lock_lock(lock,num):
lock.acquire()
time.sleep(0.2)
print "hello Num: %s" %num
lock.release() if __name__=="__main__":
lock=Lock()
for num in range(20):
p=Process(target=lock_lock,args=(lock,num))
p.start() #练习:多进程写一个文件,加锁
from multiprocessing import Process,Lock
import time def write(lock,num):
lock.acquire()
with open("e:\\text40.txt","a+") as f:
f.write("wangjing:%s\n" %(num))
lock.release() if __name__=="__main__":
lock=Lock()
for i in range(5):
p=Process(target=write,args=(lock,i))
p.start()
p.join()
print "write file done" #练习:多把锁
import multiprocessing
import time
def worker(s, i):
s.acquire()
print(multiprocessing.current_process().name + " acquire")
time.sleep(i)
print(multiprocessing.current_process().name + " release")
s.release() if __name__ == "__main__":
# 设置限制最多3个进程同时访问共享资源
s = multiprocessing.Semaphore(3)
for i in range(5):
p = multiprocessing.Process(target = worker, args = (s, i * 2))
p.start()

【Python】进程-锁(1)的更多相关文章

  1. python 进程锁 生产者消费者模型 队列 (进程其他方法,守护进程,数据共享,进程隔离验证)

    #######################总结######### 主要理解 锁      生产者消费者模型 解耦用的   队列 共享资源的时候 是不安全的 所以用到后面的锁 守护进程:p.daem ...

  2. python进程锁

    import time import threading import multiprocessing lock = multiprocessing.RLock() def task(arg): pr ...

  3. python 进程锁

    1. #_*_coding:utf-8_*_ from multiprocessing import Process,Lock import os,time def f(l,i): #加锁 l.acq ...

  4. 【python】-- 多进程的基本语法 、进程间数据交互与共享、进程锁和进程池的使用

    多进程 进程之间是相互独立的,python是启动进程的时候,是启动的是原生进程.进程是没有GIL锁的,而且不存在锁的概念,进程之间的数据式不能共享的,而线程是可以的. 1.进程的定义 用mulipro ...

  5. Python并发编程(守护进程,进程锁,进程队列)

    进程的其他方法 P = Process(target=f,) P.Pid 查看进程号  查看进程的名字p.name P.is_alive()  返回一个true或者False P.terminate( ...

  6. python网络编程-进程锁

    一:进程锁的作用 进程锁是防止多进程并发执行在屏幕打印的时候,其他进程也输出数据到屏幕,而出现混乱现象. 比如:进程池中很多进程会向同一个日志文件中打印日志 二:代码 # -*- coding:utf ...

  7. Python并发编程-多进程进程锁

    from multiprocessing import Process import json import time from multiprocessing import Lock def sho ...

  8. Python多进程-进程锁

    多进程虽然不允许多个进程同时修改同一份数据,但是多进程也有锁,为了在屏幕上打印的时候不出现两个进程同时执行的显示错误 # -*- coding:utf-8 -*- __author__ = " ...

  9. python并发编程之进程1(守护进程,进程锁,进程队列)

    进程的其他方法 P = Process(target=f,) P.Pid 查看进程号  查看进程的名字p.name P.is_alive()  返回一个true或者False P.terminate( ...

  10. python进程池和进程锁

    1.进程锁:from multiprocessing import Process, Lock def f(l, i): l.acquire() print('hello world', i) l.r ...

随机推荐

  1. Parse error: syntax error, unexpected end of file in * 的解决办法

    这个原因很简单,就是你的php语法错误. 在你的php代码种出现了<?  ?>  标准的是<?php ?>

  2. git 恢复误删的分支

    在使用git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复. 首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复. 1.创建分支 abc git branc ...

  3. Hadoop 2.7.3 完全分布式维护-简单测试篇

    1. 测试MapReduce Job 1.1 上传文件到hdfs文件系统 $ jps Jps SecondaryNameNode JobHistoryServer NameNode ResourceM ...

  4. 网络编程socket方法

    1.理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...

  5. vijos 1512 SuperBrother打鼹鼠

    背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来, ...

  6. python实现简单的聊天小程序

    概要 这是一个使用python实现一个简单的聊天室的功能,里面包含群聊,私聊两种聊天方式.实现的方式是使用套接字编程的一个使用TCP协议 c/s结构的聊天室 实现思路 x01 服务端的建立 首先,在服 ...

  7. weblogic补丁安装失败(Patch B25A is mutually exclusive and cannot coexist with patch(es): UIAL)

    由于曝出漏洞(CVE-2017-3248)需要将weblogic补丁更新至B25A,但是出现报错.如下: Conflict(s) detected - resolve conflict conditi ...

  8. openssl修改版本号

    1.查看当前openssl版本号 openssl version 2.查看openssl所在位置 which openssl 3.查看保存版本号的libcrypto.so所在位置 ldd /usr/b ...

  9. 生成PDF文档之iText

    iTextSharp.text.Document:这是iText库中最常用的类,它代表了一个pdf实例.如果你需要从零开始生成一个PDF文件,你需要使用这个Document类.首先创建(new)该实例 ...

  10. oracle的case when的用法和decode函数的用法

    oracle中,我们要使用case when时,要怎样使用 如下测试数据,我要把ClassId 的1变成一班,2变成二班,3变成三班,那sql要怎样写呢? 1.case when的用法 -- orac ...