鍍金池/ 問(wèn)答/Python  HTML/ python gevent 協(xié)程的問(wèn)題

python gevent 協(xié)程的問(wèn)題

first_time = time.time()
        for j in range(1, 45): #總共876北京城市的
          if 1 <= j<= 44:
            threads = [gevent.spawn(self.Orange_Financing_Merge, i, "北京") for i in range(1, 20)]
            gevent.joinall(threads)
            print("\033[0;31m%s\033[0m" % ">>>>>>>>>>>>>>>>>>>>>page %d>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" % (i))


          else:
            start_time = time.time()
            threads = [gevent.spawn(self.Orange_Financing_Merge, i, "北京") for i in range(1, 16)]
            gevent.joinall(threads)
            end_time = time.time()
            print("總計(jì)時(shí)間為%d" % (end_time - start_time))
        second_time = time.time()
        

我現(xiàn)在是網(wǎng)頁(yè)頁(yè)數(shù)是876 頁(yè),但是現(xiàn)在我想gevent 異步 并發(fā)量是20 ,想40多秒寫完,如何去寫,我這樣寫的有問(wèn)題嗎?

回答
編輯回答
短嘆

gevent.joinall
英文解釋:Wait for the greenlets to finish.
中文解釋:等待協(xié)程結(jié)束

例子:


In [1]: import gevent

In [2]: def solve(i):
   ...:     return i
   ...: 

In [3]: threads = [gevent.spawn(solve,i) for i in range(1,10)]

In [4]: gevent.joinall(threads)
Out[4]: 
[<Greenlet at 0x10eaa8b90>,
 <Greenlet at 0x10eaa8d70>,
 <Greenlet at 0x10eaa8e10>,
 <Greenlet at 0x10eaa8550>,
 <Greenlet at 0x10eaa8a50>,
 <Greenlet at 0x10eaa8690>,
 <Greenlet at 0x10eaa8eb0>,
 <Greenlet at 0x10eaa8f50>,
 <Greenlet at 0x10eaa8c30>]

In [5]: print([t.value for t in threads])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
2017年5月7日 00:28