q09083860 2020-05-30 12:27 采纳率: 0%
浏览 251

求助 python apply_async 异步 tkinter组件问题 ???

import multiprocessing
import threading
import time #时间库
import tkinter as tk#导入图形界面库

class ceshi():
    def __init__(self):
        pass
    def func(self,i,q,txinfo):

        # lock.acquire()
        # temp = num
        # num = temp + 1
        # num.value += 1  # 子进程改变数值的值,主进程跟着改变
        if i<500:
            q.put("失败")
            txinfo.insert(tk.END, '失败')
        elif 500<=i<999:
            q.put("成功")
        else:
            t3 = time.time()
            print("q的长度为:%d"%q.qsize())
            t4 = time.time()
            print("取q长度的时间为:",int(t4 - t3))
        # print(i)
        # print(num)
        # lock.release()

if __name__ == "__main__":
    # num = multiprocessing.Value("d", 10.0)  # d表示数值,主进程与子进程共享这个value。(主进程与子进程都是用的同一个value)
    # print(num)
    # print(type(num))
    window = tk.Tk()
    window.title('荔子现金模板')
    window.geometry('500x300')

    txinfo = tk.Text(window, height=15, width=70)
    txinfo.pack()

    t1 = time.time()  # 取系统时间
    manager = multiprocessing.Manager()
    q = manager.Queue()
    num = 0
    lock = threading.Lock()
    pool = multiprocessing.Pool(5)
    xxx=ceshi()
    for i in range(1000):
        pool.apply_async(xxx.func, args=(i,q,txinfo,))  # 函数名为main 参数为i = 每一行账号
        #xxx.func(i,q,txinfo)
    pool.close()  # 关闭进程池,不再接受新的进程
    pool.join()  # 主进程阻塞等待子进程的退出 开启会导致界面卡死
    t2 = time.time()  # 取当前系统时间
    print('多线程执行时间为:', int(t2 - t1))
    # print(num.value)
    window.mainloop()

pool.apply_async(xxx.func, args=(i,q,txinfo,)) 子进程不执行了 原因是加了txinfo 去掉txinfo又能执行 什么问题阿

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-09-12 15:08
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘