【Python】进程-锁(1)

时间:2022-09-10 13:18:22
#第二题,做一个加减乘除的考试系统,自动出题,自动判对错,并统计结果,一次考试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__ = &quot ...

  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. js设置与获取Cookie

    /*设置与获取Cookie*/ var Cookie ={} Cookie.write = function(key, value, duration){ var d = new Date(); d. ...

  2. 利用DescriptionAttribute定义枚举值的描述信息 z

    System.ComponentModel命名空间下有个名为DescriptionAttribute的类用于指定属性或事件的说明,我所调用的枚举值描述信息就是DescriptionAttribute类 ...

  3. Simple Membership 学习笔记

    第一步:新建项目后添加对WebMartix.Data 和 WebMatrix.WebData的引用第二步:在web.config中添加membership配置节第三步:修改Global.asax文件 ...

  4. F - True Liars - poj1417(背包+并查集)

    题意:有这么一群人,一群好人,和一群坏人,好人永远会说实话,坏人永远说假话,现在给你一组对话和好人与坏人的数目P1, P2. 数据里面的no是A说B是坏人, yes代表A说B是好人,就是这样,问题能不 ...

  5. 第二种:NSObject

    - (void)viewDidLoad { [super viewDidLoad]; /** * 开启子线程的方式之一:NSObject */ // 第一个参数:selector // 第二个参数:方 ...

  6. Android实训案例(五)——四大组件之一ContentProvider的使用,通讯录的实现以及ListView的优化

    Android实训案例(五)--四大组件之一ContentProvider的使用,通讯录的实现 Android四大组件是啥这里就不用多说了,看图吧,他们之间通过intent通讯 我们后续也会一一的为大 ...

  7. Java解析XML文件的常用方法介绍

    XML是一个可扩展标记语言.很多时候我们需要进行数据交换,同时也存在跨平台使用,XML文件对这些需求提供了很好的帮助! 对于Java来说,XML常见的用途就是保存数据和配置,这就涉及了对XML文件的增 ...

  8. HTML5中的input type为file控件限制上传文件类型及扩展

    简单介绍 input file控件限制上传文件类型如下:1.文件类型中间用,分开:2.html和htm这样的要写成两个: 3实例: <input type="file" na ...

  9. Window配置Redis环境和简单使用

    一.关于Redis Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据 ...

  10. VMware Coding Challenge&colon; The Heist

    类似BackpackII问题 static int maximize_loot(int[] gold, int[] silver) { int[][] res = new int[gold.lengt ...