【Python】进程-锁(1)
#第二题,做一个加减乘除的考试系统,自动出题,自动判对错,并统计结果,一次考试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)的更多相关文章
- python 进程锁 生产者消费者模型 队列 (进程其他方法,守护进程,数据共享,进程隔离验证)
#######################总结######### 主要理解 锁 生产者消费者模型 解耦用的 队列 共享资源的时候 是不安全的 所以用到后面的锁 守护进程:p.daem ...
- python进程锁
import time import threading import multiprocessing lock = multiprocessing.RLock() def task(arg): pr ...
- python 进程锁
1. #_*_coding:utf-8_*_ from multiprocessing import Process,Lock import os,time def f(l,i): #加锁 l.acq ...
- 【python】-- 多进程的基本语法 、进程间数据交互与共享、进程锁和进程池的使用
多进程 进程之间是相互独立的,python是启动进程的时候,是启动的是原生进程.进程是没有GIL锁的,而且不存在锁的概念,进程之间的数据式不能共享的,而线程是可以的. 1.进程的定义 用mulipro ...
- Python并发编程(守护进程,进程锁,进程队列)
进程的其他方法 P = Process(target=f,) P.Pid 查看进程号 查看进程的名字p.name P.is_alive() 返回一个true或者False P.terminate( ...
- python网络编程-进程锁
一:进程锁的作用 进程锁是防止多进程并发执行在屏幕打印的时候,其他进程也输出数据到屏幕,而出现混乱现象. 比如:进程池中很多进程会向同一个日志文件中打印日志 二:代码 # -*- coding:utf ...
- Python并发编程-多进程进程锁
from multiprocessing import Process import json import time from multiprocessing import Lock def sho ...
- Python多进程-进程锁
多进程虽然不允许多个进程同时修改同一份数据,但是多进程也有锁,为了在屏幕上打印的时候不出现两个进程同时执行的显示错误 # -*- coding:utf-8 -*- __author__ = " ...
- python并发编程之进程1(守护进程,进程锁,进程队列)
进程的其他方法 P = Process(target=f,) P.Pid 查看进程号 查看进程的名字p.name P.is_alive() 返回一个true或者False P.terminate( ...
- python进程池和进程锁
1.进程锁:from multiprocessing import Process, Lock def f(l, i): l.acquire() print('hello world', i) l.r ...
随机推荐
- SpringMvc4.2.5 零配置出现 No mapping found for HTTP request with URI(转)
原文地址:SpringMvc4.2.5 零配置出现 No mapping found for HTTP request with URI 采用 spring 零配置,参考 http://hanqunf ...
- 记录一下ES6扩展运算符(三点运算符)...的用法
...运算符用于操作数组,有两种层面 1. 第一个叫做 展开运算符(spread operator),作用是和字面意思一样,就是把东西展开.可以用在array和object上都行. 比如: let a ...
- Spring控制反转(依赖注入)的最简单说明
1.常规方式实现实例化 1.1已有角色如下: 一个接口Interface,两个接口实现类InstatnceA.InstanceB,一个调用类User 1.2当前实例化InstanceA如下: Inte ...
- APK骨架分析
APK反编译的一般步骤是: 使用apktool将apk文件解压(后辍apk改为rar用winrar也可解压但这样不能解密res/value目录下的各文件),厉害的可以直接静态分析smali文件(ida ...
- Zookeeper面试题
Zookeeper是什么框架 分布式的.开源的分布式应用程序协调服务,原本是Hadoop.HBase的一个重要组件.它为分布式应用提供一致性服务的软件,包括:配置维护.域名服务.分布式同步.组服务等. ...
- Resharper插件安装和破解
1.首先在最下面的地址,下载Resharper安装包,进行解压安装,安装界面如下: a 2.安装后 解压下载好的 文件 会得到如下: 3.打开序列号 会看到如下所示: 4.然后 复制 %LocalA ...
- Jdbc连接数据库基本步骤
Jdbc连接数据库的基本步骤: package demo.jdbc; import java.sql.Connection; import java.sql.DriverManager; import ...
- bzoj4310
题解: 后缀数组求出本质不同的串 然后二分答案 贪心判断是否可行 代码: #include<bits/stdc++.h> ; using namespace std; typedef lo ...
- poj1226
题解: 后缀数组 把所有串先翻转,用一个没有出现过的字符连接 然后再把所有串接起来 然后用一个没有出现过的字符连接 然后二分 在后缀数组上判断lcp 代码: #include<cstdio> ...
- zookeeper集群环境搭建(使用kafka的zookeeper搭建zk集群)
---恢复内容开始--- 使用kafka的zookeeper来搞集群的话和单纯用zk的其实差不了多少. 0.说在前头,搭建kafka集群之前请把每个服务器的jdk搞起来. 1.安装kafka wget ...