使用greenlet gevent完成多工

2021-09-26 21:48:16 字數 1487 閱讀 6642

#--coding=utf-8--

# greenlet對yeild進行了封裝,不再需要自己手動在程式**現yeild

from greenlet import greenlet

import time

def task_1():

while true:

print("--------1-------------")

g2.switch()

time.sleep(0.1)

def task_2():

while true:

print("--------2-------------")

g1.switch()

time.sleep(0.1)

g1 = greenlet(task_1)

g2 = greenlet(task_2)

# 切換到g1中去執行,

g1.switch()

#--coding=utf-8--

import gevent

def f1(n):

for i in range(n):

print(gevent.getcurrent(),i)

gevent.sleep(0.5) # 協程的意義就在於利用等待的時間去執行別的任務,執行緒結束協程就結束

def f2(n):

for i in range(n):

print(gevent.getcurrent(),i)

gevent.sleep(0.5)

def f3(n):

for i in range(n):

print(gevent.getcurrent(),i)

gevent.sleep(0.5)

g1 = gevent.spawn(f1, 5)

g2 = gevent.spawn(f2, 5)

g3 = gevent.spawn(f3, 5)

g1.join()

g2.join()

g3.join()

#--coding=utf-8--

from gevent import monkey

import gevent

import random

import time

# 有耗時操作時,需要把程式中用到的耗時的操作**,轉為gevent中自己實現的模組

monkey.patch_all()

def worker(name):

for i in range(10):

print(name, i)

time.sleep(random.random())

gevent.joinall(

[gevent.spawn(worker,"worker1"),

gevent.spawn(worker,"worker2")

])

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...