如何使这个脚本“线程安全”?

2 投票
2 回答
859 浏览
提问于 2025-04-16 14:27

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用这些数据。这个过程可能会涉及到很多步骤,比如读取文件、处理数据、然后再把结果输出到屏幕上。

有些时候,我们可能会遇到一些错误,比如程序运行的时候突然停止,或者输出的结果和我们预期的不一样。这些错误可能是因为代码写得不够好,或者是数据本身有问题。

为了让程序更稳定,我们可以在代码中加入一些检查,比如在读取数据之前先确认文件是否存在,或者在处理数据时检查数据的格式是否正确。这样可以减少错误发生的机会,让程序运行得更顺利。

总之,编程就像做菜,准备好材料、按照步骤来,才能做出美味的菜肴。如果中间出了问题,就要及时调整,确保最后的结果是我们想要的。

import os, sys, time
from threading import Thread
from threading import currentThread

import SimpleXMLRPCServer

servAddr = ("localhost", 8000)

serv = SimpleXMLRPCServer.SimpleXMLRPCServer(servAddr)

tt = []

import SimpleXMLRPCServer

class myThread(Thread):

    def __init__ (self,p):
        self.p = p
        Thread.__init__(self)

    def run (self):
        t = currentThread()
        while 1:
            n = random.random()
            tt[self.p] = self.p + '!!!'
            time.sleep(n)


def rn():
    mythreads = []
    for p in (1,2,3):
        t = myThread(p)
        mythreads.append(t)
        t.start()

    return 1
def test():
    return tt
serv.register_function(rn)
serv.register_function(test)
serv.register_introspection_functions()

2 个回答

-2

我对Python不太熟悉,但难道不能用信号量或监视器来确保操作的原子性吗?

2

像字典这样的Python对象本身就是线程安全的,所以从这个角度来看,你的脚本已经是线程安全的了。你还想让什么其他的东西变得线程安全呢?至少现在看起来没问题。

撰写回答