Python函数是线程安全的吗?(特别是这一个?)

2024-10-01 15:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

在回答之前,请理解我不想让你替我做这项工作。我更希望得到一个措辞明确的答案,解释为什么我的(可能是理论上的)问题,并解释解决问题的过程。当有人为我做这项工作时,我发现很难正确地学习。提前谢谢你。在

我有一个函数:它做的和它看起来的一样。它从一个包含facebook ID的页面使用html,一旦找到就返回ID。在

def getID(data): #Find an ID from HTML input.
    data = str(data)
    appstring = 'http://apps.facebook.com/castle_age/keep.php?user=' #We're gonna find this in the html.
    appstr_start_pos = data.find(appstring) #Tell us where we found it oh mighty one!
    if appstr_start_pos != -1: #If we find it.
        begin_ID_pos = appstr_start_pos + len(appstring)
        end_ID_pos = data.find('"', begin_ID_pos) #Find the end quote, that'll be the end of our ID string.

        our_ID = data[begin_ID_pos:end_ID_pos]
        return our_ID

现在我还没有将它打包到使用线程。线程方法,但我仍然定期调用它。我的代码现在只运行一个线程,可能需要从另一个线程类调用这个函数;这可能吗?如果没有,如何在线程类之间使用这个函数?在

问题的一种更简单的形式:如果我从多线程环境中调用这个函数,我会遇到问题吗,还是需要将它移到它自己的类中?有没有一种方法可以使函数在两个不同的线程对象之间保持可用(如果是的话,最简单的方法是什么)?在

下面是完整的代码:http://pastebin.com/txH8PvL3——请记住这是一个WIP,作为学习线程的练习。。。在


Tags: the方法函数posiddatafacebookour
3条回答

A more simple form of the question: If I call this function from a multi-threaded environment, will I have problems,

是的,从我所知,它是线程安全的

or do I need to move it into its own class?

线程安全与类无关:它与共享状态有关。如果线程共享状态,则必须以线程安全的方式(即使用锁)来访问/更改此状态。在

这并不容易,因为每个get*()函数都可以使用缓存。 所以每次通话都会导致数据的变化。->;问题

函数中使用的内置函数len()str()可以在其他线程中进行monkey修补。在

相关问题 更多 >

    热门问题