日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python方法名加__学习python中__name__方法使用

發布時間:2023/12/10 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python方法名加__学习python中__name__方法使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在自學生產者消費者模型時,發現了一個有趣的方法

if__name__ == "__main__":

for i in range(2):

p = Producer()

p.start()

for i in range(10):

c = Consumer()

c.start()

于是就去確認了一下度娘,果然好多初學者都會問這個問題,思路解釋如下:

1. 如果模塊是被導入,__name__的值為模塊名字

2. 如果模塊是被直接執行,__name__的值為’__main__’

亦或有一些解釋

1:__name__是一個變量。前后加了爽下劃線是因為是因為這是系統定義的名字。普通變量不要使用此方式命名變量。

2:Python有很多模塊,而這些模塊是可以獨立運行的!這點不像C++和C的頭文件。

3:import的時候是要執行所import的模塊的。

4:__name__就是標識模塊的名字的一個系統變量。這里分兩種情況:假如當前模塊是主模塊(也就是調用其他模塊的模塊),那么此模塊名字就是__main__,通過if判斷這樣就可以執行“__mian__:”后面的主函數內容;假如此模塊是被import的,則此模塊名字為文件名字(不加后面的.py),通過if判斷這樣就會跳過“__mian__:”后面的內容。

通過上面方式,python就可以分清楚哪些是主函數,進入主函數執行;并且可以調用其他模塊的各個函數等等。

上一段生產者消費者模型代碼,來判斷代碼確認可以簡化代碼健壯性!

#encoding=utf-8

import threading

import time

condition = threading.Condition()

products = 0

class Producer(threading.Thread):

'''生產者'''

ix = [0] # 生產者實例個數

# 閉包,必須是數組,不能直接 ix = 0

def __init__(self, ix=0):

threading.Thread.__init__(self)

self.ix[0] += 1

self.setName('生產者' + str(self.ix[0]))

def run(self):

global condition, products

while True:

if condition.acquire():

if products < 10:

products += 1;

print("{}:庫存不足,我努力生產了1件產品,現在產品總數量 {}".

format(self.getName(), products))

condition.notify()

else:

print("{}:庫存充足,讓我休息會兒,現在產品總數量 {}".

format(self.getName(), products))

condition.wait();

condition.release()

time.sleep(2)

class Consumer(threading.Thread):

'''消費者'''

ix = [0] # 消費者實例個數

# 閉包,必須是數組,不能直接 ix = 0

def __init__(self):

threading.Thread.__init__(self)

self.ix[0] += 1

self.setName('消費者' + str(self.ix[0]))

def run(self):

global condition, products

while True:

if condition.acquire():

if products > 1:

products -= 1

print("{}:我消費了1件產品,現在產品數量 {}".

format(self.getName(), products))

condition.notify()

else:

print("{}:只剩下1件產品,我停止消費。現在產品數量 {}".

format(self.getName(), products))

condition.wait();

condition.release()

time.sleep(2)

if __name__ == "__main__":

for i in range(2):

p = Producer()

p.start()

for i in range(10):

c = Consumer()

c.start()

特此記錄,學而時習之!

總結

以上是生活随笔為你收集整理的python方法名加__学习python中__name__方法使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。