【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 ...
随机推荐
- Jupyter Notebook入门教程
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...
- hadoopMR自定义输入类型
hadoop中的输入输出数据类型: BooleanWritable:标准布尔型数值 ByteWritable:单字节数值 DoubleWritable:双字节数值 FloatWritable:浮点数 ...
- mfscli的使用方法(解决mfscgi响应慢的问题)
在moosefs中,mfscgi是一个python写的server程序,其中的数据是调用同样的python工具mfscli实现的. 每当用浏览器打开mfscgi的时候,它要把所有的表数据请求一遍,非常 ...
- view的focusable属性改变设置是否可获取光标
注意图中我画的箭头,当时鼠标点击的黑色圈圈的位置,然后按钮出现了按下的效果(黄色的描边) 刚开始看到这种效果很是好奇,不知道是怎么实现的,后来仔细一想,应该是整个啤酒罐是一张图片(ImageView) ...
- IOS中position:fixed弹出框中的input出现光标错位的问题
解决方案是 在弹框出现的时候给body添加fixed <style type="text/css"> body{ position: fixed; width: 100 ...
- chrome hosts
# Go Hosts# 2017-05-02 02:13:04# Localhost (DO NOT REMOVE)127.0.0.1 localhost::1 localhost ip6 ...
- JavaScript中如何对一个对象进行深度clone
<!doctype html><html><head><meta charset="utf-8"><title>深克隆& ...
- java.lang.UnsatisfiedLinkError:no dll in java.library.path
报错:java.lang.UnsatisfiedLinkError:no dll in java.library.path 参考: Java调用Dll时,会出现no dll in java.libra ...
- oracle查看编码以及修改编码
oracle的编码一直是个很重要的问题,以前也总结的写过,但都忘了,今天再在这写一下. 首先查看oracle数据库的编码 SQL>select * from nls_database_param ...
- VSTO:使用C#开发Excel、Word【7】
第2章Office解决方案介绍 Office解决方案的三种基本模式现在,您了解Office对象模型的基本模式,本章将介绍开发人员如何模拟和构建其Offi ...