Я хочу сделать приложения с 10 потоками, которые обмениваются сообщениями 2 на 2 по почтовому ящику.Один поток записывает сообщение в файл, другой читает его.Желаемый вывод:
Thread 1 writes message: Q to file: testfile.txt !
Thread 2 : Q
Thread 3 writes message: Q to file: testfile.txt !
Thread 4 : Q
Thread 5 writes message: Q to file: testfile.txt !
Thread 6 : Q
Thread 7 writes message: Q to file: testfile.txt !
Thread 8 : Q
Thread 9 writes message: Q to file: testfile.txt !
Thread 10 : Q
Но это не работает.ОШИБКА:
TypeError: read() argument after * must be an iterable, not int
Что я могу сделать, чтобы решить мою проблему?Мой код:
# -*- coding: utf-8 -*-
import threading
import time
def write(message, i):
print "Thread %d writes message: %s to file: %s !" % (i, 'Q', 'testfile.txt')
file = open("testfile.txt","w")
file.write(message)
file.close()
return
def read(i):
with open("testfile.txt", 'r') as fin:
msg = fin.read()
print "Thread %d : %s \n" % (i, msg)
return
while 1:
for i in range(5):
t1 = threading.Thread(target=write, args=("Q", int(2*i-1)))
t1.start()
time.sleep(0.2)
t2 = threading.Thread(target=read, args=(int(2*i)))
t2.start()
time.sleep(0.5)