【发布时间】:2025-12-14 13:50:02
【问题描述】:
我想创建一个具有 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)
【问题讨论】:
标签: python multithreading ipc python-multithreading