python面試1000題之4-6

4 python下多線程的限制以及多進程中傳遞參數的方式

python多線程有個全局解釋器鎖(global interpreter lock),這個鎖的意思是任一時間只能有一個線程使用解釋器,跟單cpu跑多個程序一個意思,大家都是輪着用的,這叫“併發”,不是“並行”。

多進程間共享數據,可以使用 multiprocessing.Value 和 multiprocessing.Array

5  python多線程與多進程的區別:

在UNIX平臺上,當某個進程終結之後,該進程需要被其父進程調用wait,否則進程成爲殭屍進程(Zombie)。所以,有必要對每個Process對象調用join()方法 (實際上等同於wait)。對於多線程來說,由於只有一個進程,所以不存在此必要性。

多進程應該避免共享資源。在多線程中,我們可以比較容易地共享資源,比如使用全局變量或者傳遞參數。在多進程情況下,由於每個進程有自己獨立的內存空間,以上方法並不合適。此時我們可以通過共享內存和Manager的方法來共享資源。但這樣做提高了程序的複雜度,並因爲同步的需要而降低了程序的效率。

6  請寫出一段Python代碼實現刪除一個list裏面的重複元素

 

>>> l = [1,1,2,3,4,5,4]
>>> list(set(l))
[1, 2, 3, 4, 5]
或者
d = {}
for x in mylist:
    d[x] = 1
mylist = list(d.keys())
  1. 利用map()函數,把用戶輸入的不規範的英文名字,變爲首字母大寫,其他小寫的規範名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']:

 

def normalize(name):
    return name[0].upper()+name[1:].lower()

def normalizeList(inputlist):
    return list(map(normalize, inputlist))

 

本文首發於Python黑洞網,csdn同步跟新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章