我有一个列表,我正在尝试为列表中的每个项目进行循环,同时
我尝试过使用此代码: 但它在循环逐个中按照 我希望它同时为 提前致谢。thelist = ['first', 'second', 'third']
def loop():
while True:
for x in thelist:
x = str(x)
time.sleep(5)
do_stuff_that_includes_x()
thelist
排序。thelist
中的所有项目执行操作。
答案 0 :(得分:4)
正如vossad01的评论中所指出的,你的代码在你的循环内有5秒的延迟。这将导致列表中任何两个项目之间延迟五秒钟。如果您删除5秒延迟,您的消息将近乎即时发送到列表中的所有房间。
thelist = ['first', 'second', 'third']
def loop():
while True:
for x in thelist:
x = str(x)
do_stuff_that_includes_x()
time.sleep(5)
答案 1 :(得分:2)
我认为你需要多处理:
import time
def work(x):
x = str(x)
time.sleep(5)
print x
# do_stuff_that_includes_x()
thelist = ['first', 'second', 'third']
from multiprocessing import Pool
p = Pool( len( thelist ) )
p.map( work, thelist )
答案 2 :(得分:2)
首先,由于全局解释器锁定(GIL),多线程并行化不会产生性能提升。因此,如果出于性能原因而执行此操作,则需要查看multiprocessing模块。有关使用进程池的map成员来完成此操作的示例,请参阅how do I parallelize a simple python loop?。
附注:重新分配迭代变量(x)是不好的形式。此外,由于您希望并行执行,因此如果您可以在x上对do_stuff_that_includes_x()进行参数化,这将是最简单的。
答案 3 :(得分:0)
使用*
运算符立即解压缩整个列表
do_stuff_that_includes_x(*x)