У меня есть следующий в моей колбе приложении:GEvent нить не появляется последовательные параметрами от списка
d = {'a': a, 'token':token}
import gevent.monkey
gevent.monkey.patch_socket()
threads = [gevent.spawn(myfunction, d) for i in range(2)]
result = gevent.joinall(threads)
print [thread.value for thread in threads]
Я пытаюсь использовать несколько greenlets из следующих функций:
def myfunction(args):
a= args['a']
token= args['token']
lo = list_object()
вот оно устанавливаются :
def list_object():
qlist = []
# the following redis db lookup produces qlist=[a,b,c,......z]
qlist = pr.query.order_by('failed').all()
return qlist.pop(0)
Я замечаю, что, хотя я ожидал, что каждый проветриватель будет вытолкнуть первый элемент с , так что запуск 2 потоков (как в этом примере) приведет к тому, что первое значение потока lo будет «a», а второе «b». Однако я вижу, что оба значения lo устанавливаются в 'a'. Почему это происходит? Как я могу это исправить?
Edit:
qlist = []
d = {'a': a, 'token':token 'q':qlist}
.......
Спасибо, я понимаю, что вы говорите. Как вы думаете, что сделайте это глобальным? – user61629
Да, до тех пор, пока он заполняется до использования функции. Думаю, вам не нужно будет использовать его как параметр для вашей функции, если он глобальный. – Connor