python中的循环未正确递增

2024-04-20 08:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中使用了一个for循环和范围函数(range(0,100000 )。你知道吗

在循环中,我创建了一个线程来调用一些方法来执行一些任务,并将循环的索引作为参数传递给线程的目标函数。你知道吗

我发现循环中索引的值并不是每次迭代都递增。
相反,它多次生成相同的索引,有时跳过迭代

for index in range(0,100000):                                                         
    t=Thread(target=somefunction,args=(index,)                                  
    t.start()                                                                                                
    t.join()            

somefunction内部,我正在执行一些操作并打印索引值。得到相同的索引值打印。哪个表示循环未正确递增。 请帮忙


Tags: 方法函数intarget目标forindexargs
1条回答
网友
1楼 · 发布于 2024-04-20 08:24:14

您可以实现如下内容来解决问题。线程将运行完整的程序,这就是循环不能正确递增的原因。你知道吗

在这里,我使用map(将给定函数应用于给定iterable的每个项)将param传递给函数

from multiprocessing.dummy import Pool as ThreadPool
import time
import datetime

def operation(value):
    # whatever operation needs to be performed
    print("{} : Thread no {}\n".format(datetime.datetime.now(),value))
    time.sleep(20)

# Data/tasks needs to be processed added in list
Data = [1,2,3,4,5,6,7,8,9]

# Creating pools 
c_pool = ThreadPool(5) # using 5 threads
c_pool.map(operation, Data) # using map method to perform operation
c_pool.close()
c_pool.join()

它将执行5个任务/操作。你知道吗

这里取前5个进行处理

2019-04-26 **12:47:37**.800258 : Thread no 1
2019-04-26 **12:47:37**.800258 : Thread no 2
2019-04-26 **12:47:37**.800258 : Thread no 3
2019-04-26 **12:47:37**.800258 : Thread no 4
2019-04-26 **12:47:37**.800258 : Thread no 5

剩下的5秒在20秒后开始(时间。睡眠(20) ()

2019-04-26 **12:47:57**.809258 : Thread no 6
2019-04-26 **12:47:57**.809258 : Thread no 7
2019-04-26 **12:47:57**.809258 : Thread no 8
2019-04-26 **12:47:57**.809258 : Thread no 9

相关问题 更多 >