使用线程附加全局列表 - 无法访问线程外的结果

时间:2017-02-01 22:53:58

标签: python global-variables python-multithreading

我正在使用线程来加速通过RESTful API从网站收集数据。我将结果存储在一个列表中,稍后我会走。我已经将列表设置为全局,但是当我尝试在线程外部打印(列表)时,我看不到任何结果。在内部,我可以打印(列表)并看到它正确附加所有数据。收集这些数据的最佳方法是什么?

global global_list
global_list = []

pool = ActivePool()
s = threading.Sempahore(3)

    def get_data(s, pool, i, list):
        with s:
            name = threading.currentThread().getName()
            pool.makeActive(Name)
            data = []
            session = get_session(login info and url)#function for establishing connection to remote site
            request = {API Call 'i'}
            response = session.post(someurl, json=request)
            session.close()
            data = response.json()
            global_list.append(data)
            pool.makeInactive(name)

def main():
    for i in api_list:
        t = threading.Thread(target=get_data, name=i['uniqueID'], args=(s, pool, i, global_list))
    print(global_list)

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

我能够使用队列!根据下面的问题,我将put()所需的数据存储在线程中,然后将其存储在我在线程外部附加get()的列表中。

Return Value From Thread