我又写了一个问题的示例代码。我有一个测试用例,其中最大的时间延迟将与其随机字符串一起获取。
例如[1,2,7,2,1,2,8,1]
会来[1,2,7,7,7,7,8,8]
它正在工作,但它没有在正确的顺序,因为在7的随机字符串的输出是随机的。我已经使用了wait()
,但我不明白为什么它在生成greenlet时不处理greenlet。我试过使用tasks = ThreadPool()
和tasks = []
#!/usr/bin/python
import random
import string
from gevent import sleep, spawn, wait
from gevent.threadpool import ThreadPool
import time
def random_string():
digits = "".join( [random.choice(string.digits) for i in xrange(8)] )
chars = "".join( [random.choice(string.letters) for i in xrange(10)] )
return chars
def shuffle_message (message, delay):
sleep(delay)
print("Shuffled message: {} and time: {}". format(message, delay))
def main():
tasks = ThreadPool(25)
prev = 0
a=[1,2,7,2,1,2,8,1] #test case but it is randomise normally
for i, elem in enumerate(a):
delay = a[i]
string = random_string()
print("Message: {} and time: {}". format(string, delay))
if prev < delay:
prev = delay
else:
delay = prev
print("New message: {} and time: {}". format(string, delay))
tasks.spawn(shuffle_message, string, delay)
wait()
if __name__ == "__main__":
main()
目前没有回答
相关问题 更多 >
编程相关推荐