专业课-操作系统-线程/进程-线程相关
面5笔5Linux 平台,不提供任何相关库函数和工具包,只利用线程的随机调度特性和 sleep 函数的低精度特性,请编写一段程序实现:给一组字符,输出该组字符的一个随机化排列。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # coding=utf-8 import threading import time targetStr = 'abcdefg' # 不重复字符串 targetStrLength = len(targetStr) resultStr = '' # 随机排序的字符串保存到这里 lock = threading.RLock() class RandThread(threading.Thread): def __init__(self, num): threading.Thread.__init__(self) self.num = num def run(self): time.sleep(0.5) lock.acquire() global targetStr global resultStr resultStr += targetStr[self.num] lock.release() def main(): threads = [] # 创建线程对象 for i in xrange(targetStrLength): threads.append(RandThread(i)) # 启动线程 for t in threads: t.start() # 主线程等待子线程结束 for t in threads: t.join() print 'pre: ' , targetStr print 'random: ' , resultStr if __name__ == '__main__' : main() |