国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > Python之线程与进程相关介绍

Python之线程与进程相关介绍

头像

爱喝马黛茶的安东尼

2019-07-06 09:28:303484浏览 · 0收藏 · 0评论

Python 线程与进程

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

使用 threading ???/strong>

方法一:

import threading
import time
def foo(n):
    print('foo %s'%n)
    time.sleep(1)
    print('end foo')
def bar(n):
    print('bar %s'%n)
    time.sleep(2)
    print('end bar')
t1 = threading.Thread(target=foo, args=(1,))
t2 = threading.Thread(target=bar, args=(2,))
t1.start()
t2.start()
print('........in the main..........')

运行结果:

foo 1
bar 2
........in the main..........
end foo
end bar

方法二:

import time, threading
class MyThread(threading.Thread):
    def __init__(self, num):
        threading.Thread.__init__(self)
        self.num = num
    def run(self):             #定义线程要运行的函数
        print("running on number:%s" % self.num)
        time.sleep(3)
if __name__ == '__main__':
    t1 = MyThread(1)
    t2 = MyThread(2)
    t1.start()
    t2.start()

运行结果:

running on number:1
running on number:2

join 方法使得主线程等待子线程完成才继续

import threading
import time
begin = time.time()
def foo(n):
    print('foo %s'%n)
    time.sleep(1)
    print('end foo')
def bar(n):
    print('bar %s'%n)
    time.sleep(2)
    print('end bar')
t1 = threading.Thread(target=foo, args=(1,))
t2 = threading.Thread(target=bar, args=(2,))
t1.start()
t2.start()
t1.join()
t2.join()
print('........in the main..........')

运行结果:

foo 1
bar 2
end foo
end bar
........in the main..........

相关推荐:《Python视频教程

在计算密集型任务中串行与多线程进行对比

import threading, time
begin = time.time()
def add(n):
    sum = 0
    for i in range(n):
        sum += i
    print(sum)
add(100000000)
add(200000000)
end = time.time()
print(end-begin)

运行结果:

4999999950000000
19999999900000000
17.66856598854065
import threading, time
begin = time.time()
def add(n):
    sum = 0
    for i in range(n):
        sum += i
    print(sum)
t1 = threading.Thread(target=add, args=(100000000,))
t1.start()
t2 = threading.Thread(target=add, args=(200000000,))
t2.start()
t1.join()
t2.join()
end = time.time()
print(end-begin)

运行结果:

4999999950000000
19999999900000000
21.088160276412964
# 结果为串行运行比多线程运行更快

Cpython 中有 GIL (Global Interpreter Lock,全局解释器锁),所以在同一时刻,只能有一个线程进入调度。如果任务是IO密集型的,可以使用多线程;如果任务是计算密集型的,最优方法是改成 C。

setDaemon()

调用该方法只要是主线程完成,不管子线程是否完成都要和主线程一起退出。

threading.currentThread()

返回当前的线程变量。

threading.active_count()

返回正在运行的线程数量。

import threading, time
from time import ctime,sleep
def music(func):
    print(threading.current_thread())
    for i in range(2):
        print("Begin listening to %s. %s" %(func, ctime()))
        sleep(2)
        print("end listening %s" %ctime())
def movie(func):
    print(threading.current_thread())
    for i in range(2):
        print("Begin watching at the %s %s" %{func, ctime()})
        sleep(4)
        print("end watching %s" %ctime())
threads = []
t1 = threading.Thread(target=music, args=('klvchen',))
threads.append(t1)
t2 = threading.Thread(target=movie, args=('lili',))
threads.append(t2)
if __name__ == '__main__':
    for t in threads:
        t.setDaemon(True)
        t.start()
    print(threading.current_thread())
    print(threading.active_count())
    print("all over %s" %ctime())

运行结果:

<Thread(Thread-1, started daemon 5856)>
Begin listening to klvchen. Wed Jul 11 23:43:51 2018
<Thread(Thread-2, started daemon 9124)>
<_MainThread(MainThread, started 9444)>
3
all over Wed Jul 11 23:43:51 2018
关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

免费观看已满十八岁电视剧日剧| 同学的母亲中字ID| 单亲妈妈用性缓解孩子压力| 极品女教师| 国产X9X9X9X9X9X任意...| 他的手渐渐地也开始不安分起来 | 公日日躁我和公乱小说 | 老牛耕田陈雪全文免费阅读笔趣阁| 小雪被老汉各种姿势玩弄视频 | 密爱在线观看| 高压监狱4伦理HD| 公交车大肉大捧一进一出好爽| 3DMAX9喷射2D3D区别漫..| 第一次和公翁做爰又大又粗| 女性三角毛毛若隐若现| 欧美MV日韩MV最火的一句歌词| 性XXXX裸体xXXX| 荡货夹的这么紧欠C调教视频| 《黏糊糊的你》免费观看| 办公室刺激战场3| 《菊内留香》双男主| 家族轮换之共乐的日子最新章节更, | 男人添女人荫道口视频| 巨乳童颜| 黑料正能量| 男同网站| 夜童| 国产成人久久爽AAA影视| 电影《法国空姐2》| 《厨房激战5》完整版在线观看| 禁播伦理黑人2| 亚洲精品国偷自产久色| 蜜桃成熟时李慧珍演的| 江忍| 护士小嫩嫩好紧好爽H漫画| 鲁鲁射击免费播放电视剧全部| 免费观看已满十八岁电视剧日剧| 罗志祥多人| 77777影院在线观看电视剧大..| 色搞| 韩国女演员克拉拉