国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python多線程同步---文件讀寫控制方法

2020-02-23 06:27:13
字體:
來源:轉載
供稿:網友

1、實現文件讀寫的文件ltz_schedule_times.py

#! /usr/bin/env python#coding=utf-8import osdef ReadTimes(): res = [] if os.path.exists('schedule_times.txt'):  fp = open('schedule_times.txt', 'r') else:  os.system('touch schedule_times.txt')  fp = open('schedule_times.txt', 'r') try:  line = fp.read()  if line == None or len(line)==0:   fp.close()   return 0  tmp = line.split()  print 'tmp: ', tmp  schedule_times = int(tmp[-1]) finally:  fp.close() #print schedule_times return schedule_timesdef WriteTimes(schedule_times): if schedule_times <= 10:  fp = open('schedule_times.txt', 'a+')#10以內追加進去 else:  fp = open('schedule_times.txt', 'w')#10以外重新寫入  schedule_times = 1 print 'write schedule_times start!' try:  fp.write(str(schedule_times)+'') finally:  fp.close()  print 'write schedule_times finish!'if __name__ == '__main__': schedule_times = ReadTimes() #if schedule_times > 10: # schedule_times = 0 print schedule_times schedule_times = schedule_times + 1 WriteTimes(schedule_times)

2.1、不加鎖對文件進行多線程讀寫。

file_lock.py

#! /usr/bin/env python#coding=utf-8from threading import Threadimport threadingimport timefrom ltz_schedule_times import *#1、不加鎖def lock_test(): time.sleep(0.1)  schedule_times = ReadTimes() print schedule_times schedule_times = schedule_times + 1 WriteTimes(schedule_times)if __name__ == '__main__': for i in range(5):  Thread(target = lock_test, args=()).start()

得到結果:

0write schedule_times start!write schedule_times finish!tmp: tmp: tmp: tmp:  [[[['1''1''1''1']]]]111 1write schedule_times start!write schedule_times start!write schedule_times start!write schedule_times start!write schedule_times finish!write schedule_times finish!write schedule_times finish!write schedule_times finish!

文件寫入結果:

Python多線程同步---文件讀寫控制

以上結果可以看出,不加鎖多線程讀寫文件會出現錯誤。

2.2、加鎖對文件進行多線程讀寫。

file_lock.py

#! /usr/bin/env python#coding=utf-8from threading import Threadimport threadingimport timefrom ltz_schedule_times import *#2、加鎖mu = threading.Lock() #1、創建一個鎖def lock_test(): #time.sleep(0.1)  if mu.acquire(True): #2、獲取鎖狀態,一個線程有鎖時,別的線程只能在外面等著  schedule_times = ReadTimes()  print schedule_times  schedule_times = schedule_times + 1  WriteTimes(schedule_times)  mu.release() #3、釋放鎖  if __name__ == '__main__': for i in range(5):  Thread(target = lock_test, args=()).start()

結果:

0write schedule_times start!write schedule_times finish!tmp: ['1']1write schedule_times start!write schedule_times finish!tmp: ['1', '2']2write schedule_times start!write schedule_times finish!tmp: ['1', '2', '3']3write schedule_times start!write schedule_times finish!tmp: ['1', '2', '3', '4']4write schedule_times start!write schedule_times finish!            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 田阳县| 嘉祥县| 遵义县| 崇信县| 寿宁县| 承德县| 志丹县| 杭州市| 晴隆县| 确山县| 阿克陶县| 冷水江市| 图木舒克市| 漳平市| 丹阳市| 济源市| 边坝县| 罗江县| 龙山县| 台中市| 苍梧县| 莒南县| 洱源县| 清流县| 贵港市| 小金县| 通江县| 东港市| 县级市| 陆河县| 南宁市| 齐河县| 双辽市| 嵊州市| 淳安县| 威远县| 右玉县| 南部县| 荔浦县| 南部县| 曲阜市|