为了账号安全,请及时绑定邮箱和手机立即绑定

从线程池中按顺序并行执行 10 个线程

从线程池中按顺序并行执行 10 个线程

交互式爱情 2022-09-06 17:56:30
我有程序,从文件中获取存储的值并在线检查。最大并行度为 10 个线程,之后系统崩溃。以下是我目前正在做的事情:threads_value = list()i = 0while i < len(ValueList):    for value in ValueList[i:i + 1]:        value_read = server_connect_read(channel, value)        thread = threading.Thread(target=update_value, args=(value_read,))        thread.setName('Currently running thread' + int(value))        print(threading.current_thread().getName())        threads_value.append(thread)        thread.start()        i = i + 1for thread in thread_value:    thread.join()def update_value(value_read):    if value_read.server_connect() is False:        return False    print("updating values")    update = server_read.update_value(old_values.xlsx)    if value_read.server_disconnet() is False:        return False在这里,根据文件中的值,线程一次全部启动。因此,如果我有超过20个值,则在前10个之后开始的线程无法连接到服务器,并且线程将显示断开连接。因此,并非所有值都会更新。我仍在学习并经历了一些建议,即在尝试线程时限制worker的数量,我看到线程没有以顺序方式启动。有没有办法用序列起始线程创建线程拉动。
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

from multiprocessing.dummy import Pool


def update_value(value):

    value_read = server_connect_read(channel, value)

    if value_read.server_connect() is False:

        return False

    print("updating values")

    update = server_read.update_value(old_values.xlsx)

    if value_read.server_disconnet() is False:

        return False


Pool(4).map(update_value, ValueList)


查看完整回答
反对 回复 2022-09-06
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信