python 多執行緒實現洗牌演算法 二

2021-06-16 23:14:56 字數 1624 閱讀 2261

#-*- 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 ...