跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 是否有子进/线程对主线程队列进行操作的方法?以及回调函数范围的问题。。。
未分類
23 9 月 2020

是否有子进/线程对主线程队列进行操作的方法?以及回调函数范围的问题。。。

是否有子进/线程对主线程队列进行操作的方法?以及回调函数范围的问题。。。

資深大佬 : pppguest3962 2

python 是一知半解,属于急忙有车就上的认知,摸了一天才知道子进 /线程无法直接去操作主线程的队列,
改变想法,从进 /线程里面回调”推”任务出来,在进 /线程结束后,由主线程对列表任务进行操刀处理加入到队列,
才发现在回调函数里面似乎受限制了,如何破?

# 最终结果列表,全局的味道 GGlobalList = []  def procSome(xx):     return xxList  def multiProcFun():     BABTaskDict = {'TkNum': 32,                    'TkString': 'test String'}      def procFun(taskInfo):         aDataList = []         for i in range(1, 7)             taskNumber = taskInfo.get('TkNum')             taskString = taskInfo.get('TkString')             somethingList = procSome(taskNumber, taskString)             ...             ...             aDataList = aDataList + somethingList         if aDataList:             return aDataList         else:             return None      with concurrent.futures.ProcessPoolExecutor(max_workers=3) as executor:         def cb_fun(res):             data = res.result()             if data:                 # global GGlobalList # 很显然这里就算声明了要用,也是不行的                 # GGlobalList = GGlobalList + data   <--报:                 # UnboundLocalError: local variable 'addtomtQueenList' referenced before assignment                 # 错误          to_do = []         future = executor.submit(procFun, BABTaskDict).add_done_callback(cb_fun)         to_do.append(future)  if __name__ == '__main__':     ltQueen = queue.LifoQueue()     multiProcFun()      for i in GGlobalList:         ltQueen.put(i)              # 如果能在 procFun 里面直接操作 ltQueen 就好了... 

大佬有話說 (4)

  • 資深大佬 : formaxin

    线程和进程都有队列吧
    multiprocessing.queuq

  • 資深大佬 : xiaolinjia

    子线程无法操作主线程的队列?子进程无法操作主进程的队列?就扯淡。本来队列就是线程和线程通信,进程和进程通信的一种方法。
    只是,多线程用的队列是 queue 模块下的。多进程用的队列是 multiprocessing 模块下的 Queue 。
    然后你那 queue.LifoQueue 是用于多线程的。

  • 資深大佬 : chaoshui

    回复不支持 markdown 啊,有点恶心
    不是很明白你要做什么, 是要在回调中拿到返回值修改全局变量吗
    是否有子进/线程对主线程队列进行操作的方法?以及回调函数范围的问题。。。

  • 資深大佬 : chaoshui

    变量命名不规范, 改了一下
    是否有子进/线程对主线程队列进行操作的方法?以及回调函数范围的问题。。。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具