猿问

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

我有程序,从文件中获取存储的值并在线检查。最大并行度为 10 个线程,之后系统崩溃。


以下是我目前正在做的事情:


threads_value = list()

i = 0

while 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 + 1

for 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的数量,我看到线程没有以顺序方式启动。


有没有办法用序列起始线程创建线程拉动。


交互式爱情
浏览 131回答 1
1回答

ABOUTYOU

from multiprocessing.dummy import Pooldef update_value(value):&nbsp; &nbsp; value_read = server_connect_read(channel, value)&nbsp; &nbsp; if value_read.server_connect() is False:&nbsp; &nbsp; &nbsp; &nbsp; return False&nbsp; &nbsp; print("updating values")&nbsp; &nbsp; update = server_read.update_value(old_values.xlsx)&nbsp; &nbsp; if value_read.server_disconnet() is False:&nbsp; &nbsp; &nbsp; &nbsp; return FalsePool(4).map(update_value, ValueList)
随时随地看视频慕课网APP

相关分类

Python
我要回答