#-*- coding:cp936 -*-
import random
import threading
mylock=threading.rlock()
ren=
name=['lidandan','zhangqi','fanfan']
pai=
num=53
class puke(threading.thread):
def __init__(self,name):
threading.thread.__init__(self)
self.name=name
self.dict={}
def run(self): #發牌
global lidandan,zhangqi,fanfan,num
while len(self.dict)<17: #每人同時發17張
mylock.acquire() #上鎖
rd=random.randint(0,num) #這個不是很隨機
keys=list(pai.keys()) #列表化,便於處理
random.shuffle(keys) #打亂key的順序,盡量隨機化
self.dict[keys[rd]]=pai[keys[rd]] #將pai的第rd個(key,value)插入到類自己的字典
del pai[keys[rd]]
num=num-1
mylock.release() #解鎖
def dizhuadd(ren): #搶地主
global pai
print("開始搶地主!")
dizhu=random.randint(0,2)
for j in range(3):
banbie=0
banbie=int(input(ren[dizhu].name+"你要地主嗎?要請輸入1,不要請輸入0\n"))
if(banbie==1):
for key in pai:
ren[dizhu].dict[key]=pai[key]
del pai
print(ren[dizhu].name+'搶到地主!\n\n')
return
dizhu=(dizhu+1)%3
print("沒人叫地主,重新開始!\n")
def printpai(ren):
for i in ren:
print (i.name+':')
for key in sorted(i.dict.keys()): #撲克牌排序
print(i.dict[key],end=' ')
print(end='\n\n')
def paithreads(ren,name):
for i in name:
for i in ren:
i.start()
paithreads(ren,name)
#列印搶地主之前三人的牌
printpai(ren)
#搶地主
dizhuadd(ren)
#列印搶地主之後三人的牌
printpai(ren)
python多執行緒實現
資料夾命名不能用官方已有的模組名比如threading.py test.py等等都會報錯 from multiprocessing import process import os 子程序要執行的 def run proc name print run child process s s name,...
python多執行緒實現
coding utf 8 import threading 匯入執行緒模組 from time import ctime,sleep 建立執行緒事件 defeat print 我在吃東西 s ctime 執行緒組 threads 建立執行緒數量 for x in range 10 t1 thread...
python多執行緒執行緒池實現
在python中多執行緒可以使用threading來實現,但實際使用時考慮效能等,大多會使用到執行緒池,下面就是基於python2和python3來說明下執行緒池的使用。import time def testthread fl time.sleep 1 print print fl return ...