当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《python函数线程安全吗?(特别是这一个?)》经验,为你挑选了1个好方法。

在回答之前,请理解我不希望你为我做这项工作.我更愿意回答一个措辞性的答案,为什么我的(可能是理论上的)问题存在,并且解释了修复它的过程.当有人为我做这项工作时,我发现很难正确地学习.先感谢您.

我有这个功能:它完全像它正在做的那样.它使用包含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

现在我没有把它打包在我的一个使用thread.Threading方法的类中,但我仍然经常调用它.我的代码现在只运行一个线程,我可能需要从另一个线程类调用此函数; 这可能吗?如果没有,我如何在线程类之间使用此函数?

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

以下是完整的代码:http://pastebin.com/txH8PvL3 - 请记住它是一个WIP,作为学习线程的练习......



1> jldupont..:

一个更简单的问题形式:如果我从多线程环境调用此函数,我是否会遇到问题,

是的,从我能说的是它是线程安全的

或者我是否需要将其移入自己的班级?

线程安全与类无关:它与共享状态有关.如果线程共享状态,则必须设置以线程安全的方式访问/改变此状态,即使用锁.


@Thantik:对.该函数不会改变任何共享状态.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有